LISP calcul d 'une longueur

JP -  
 JP -
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
)

1 réponse

  1. Yoda
     
    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
    1. JP
       
      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