LISP calcul d 'une longueur

Fermé
JP - 2 mai 2012 à 17:05
 JP - 2 mai 2012 à 20:42
Bonjour,

j'ai un souci dans un programme, j'aimerai avoir au point pt0 une insertion de texte qui me donne la longueur LONG de la polyligne dessiné

voici le programme

(defun c:réseaux()
(command "-calque" "CH" "Réseaux" "" "") ; on active le calque réseaux
(setq R (getstring "\nQuel type de réseau, EDF, EU ou EAU:"))
(setq R1 (strcase R))
(cond
(( = R1 "EDF")(command "-typeligne" "A" "EDF" "" "" ))
(( = R1 "EAU")(command "-typeligne" "A" "EAU" "" "" ))
(( = R1 "EU" )(command "-typeligne" "A" "EU" "" "" ))
(T (prompt "\vous avez mal ou pas renseigné le type de réseaux"))
)
(Prompt "\nCliquer le contour de l'aire de stockage")
(setq pt0(getpoint "\nDonner le 1er point:"))'on donne le point de départ
;(setq LONG 0) ; initialise la longueur à 0
(command "polylign" pt0 "la" 0 0)
(terpri)(setq rep "F"); on saute une ligne
(while (= rep "F")
(setq pt (getpoint pt0 "\nDonner le réseau (Return pour FIN): "))
(command pt)
(setq pt0 pt)
(if (= pt nil) (setq rep "X"))
(setq d (distance pt0 pt))
(setq LONG (+ LONG d))
)



(setq index (strcat (rtos LONG 2 2)"ml"))
(command "texte" pt0 0.25 "" index "")
(command "-calque" "CH" "0" "" "") ; on active le calque 0
(command "-typeligne" "A" "DuCalque" "" "" );on revient au ligne du claque 0
)


A voir également:

1 réponse

Bonjour,

Lisp corrigé

(defun c:réseaux()
(command "-calque" "CH" "Réseaux" "" "") ; on active le calque réseaux
(setq R (getstring "\nQuel type de réseau, EDF, EU ou EAU:"))
(setq R1 (strcase R))
(cond
(( = R1 "EDF")(command "-typeligne" "A" "EDF" "" "" ))
(( = R1 "EAU")(command "-typeligne" "A" "EAU" "" "" ))
(( = R1 "EU" )(command "-typeligne" "A" "EU" "" "" ))
(T (prompt "\vous avez mal ou pas renseigné le type de réseaux"))
)
   (setq LONG 0) ; initialise la longueur à 0 
   (Prompt "\nCliquer le contour de l'aire de stockage") 
   (setq pt0(getpoint "\nDonner le 1er point:"));on donne le point de départ 
   
;;;;;pour une polyligne fermée enelver les commentaires
    ;(setq ptOri pt0)
   
   (command "polylign" pt0 "la" 0 0) 
   (terpri)(setq rep "F"); on saute une ligne 
   (while (= rep "F") 
     (setq pt (getpoint pt0 "\nDonner le réseau (Return pour FIN): ")) 
     (command pt) 
     (if (= pt nil)
    	 (setq rep "X")
        (progn 		 
          (setq d (distance pt0 pt)) 
          (setq LONG (+ LONG d))
          (setq pt0 pt) 
        )
      )
	)
	
;;;;;pour une polyligne fermée enelver les commentaires
    ;(setq d (distance pt0 ptOri))
    ;setq LONG (+ LONG d))
    ;(command "pedit" "@" "c" "") 
	
   (setq index (strcat (rtos LONG 2 2)"ml")) 
   (command "texte" pt0 0.25 "" index) 
   (command "-calque" "CH" "0" "") ; on active le calque 0 
   (command "-typeligne" "A" "DuCalque" "");on revient au ligne du claque 0 

)
0
ok j'ai vu mon erreur
Merci
ça
(if (= pt nil)
(setq rep "X")
(progn
(setq d (distance pt0 pt))
(setq LONG (+ LONG d))
(setq pt0 pt)
)
)
)
au lieu de ça
(if (= pt nil) (setq rep "X"))
(setq d (distance pt0 pt))
(setq LONG (+ LONG d))
)
0