Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous

Ceci est mon premier vrai lisp

Il s'agit de créer une polyligne selon les points cliqués et d'en modifier les extrémités.

Mon probleme ets que lorsque je le déroule morceau par morceau dans visuallisp il semble fonctionner.

Mais quand je le lance comme commande il me donne :"élément incorrect dans la liste d'arguments: 219.161"

Je ne sais pas comment retrouver l'erreur, je suis vraiment débutant dans Visual..

voici le lisp en question

 

;;; modifie les coordonées d'un point(liste de coordonées)
(defun modcoor (L x y)
 (cons	(+ (car L) X)
(cons (+ (cadr L) y) '(0))
 )
)
;;;defini la position d'un point (L1) par rapport au premier point d'une liste de points(L2)
(defun pos (L1 L2 / sens)
 (if (> (car L1) (car (car L2)))
   (if	(> (cadr L1) (car (cadr L2)))
     (setq sens "1")
     (setq sens "2")
   )
   (if	(> (cadr L1) (car (cadr L2)))
     (setq sens "3")
     (setq sens "4")
   )
 )
)
(defun  polsig	(/
	 lstpt
	 ptd
	 ptf
	)
 (setq lstpt nil)
 (setq ptd nil)
 (setq ptf nil)
 (setq ptd (getpoint "\1er point"))

 (initget 1 "1 2")
 (setq	fild (getkword "1er fil ou 2e fil?(1 or 2)")
 )
 (while
   (and
     (or pt1
  (setq pt1 (getpoint "Enter the first point:  "))
     )
     (setq pt2 (getpoint "enter the next point <eXit>:  "))
   )
    (setq lstpt (cons pt2 lstpt))
 )
 (initget 1 "1 2")
 (setq fila (getkword "1er fil ou 2e fil?(1 or 2)"))
 (setq ptf (car lstpt))
 (setq lstpt (cdr lstpt))
 (setq sens (pos ptf lstpt))


 (setq	ptf;;;if car lstpt nill
 (if (= fila "1")
   (if (or (= sens "1") (= sens "2"))
     (setq ptf (modcoor ptf 0.5 0))
     (setq ptf (modcoor ptf -0.5 0))
   )
   (if (= sens "1")
     (
      (setq
	ptf (cons (modcoor ptf 0.2 0.5) (list (modcoor ptf 1 1)))
      )
       (setq lstpt (cons (modcoor (car lstpt) 0 1) (cdr lstpt)))
     )
     (if (= sens "2")
       (
	(setq ptf (cons (modcoor ptf 5 5) (list (modcoor ptf 5 5))))
	 (setq lstpt (cons (modcoor (car lstpt) 5 5) (cdr lstpt)))
       )
       (if (= sens "3")
	 (
	  (setq	ptf
		 (cons (modcoor ptf 10 10) (list (modcoor ptf 10 10)))
	  )
	   (setq lstpt (cons (modcoor (car lstpt) 5 5) (cdr lstpt)))
	 )
	 (if (= sens "4")
	   (
	    (setq ptf (cons (modcoor ptf 20 20)
			    (list (modcoor ptf 20 20))
		      )
	    )
	     (setq
	       lstpt (cons (modcoor (car lstpt) 20 20) (cdr lstpt))
	     )
	   )
	   (nil)
	 )
       )
     )
   )
 )
 )


 (setq lstpt (reverse lstpt))
 (setq sens (pos ptd lstpt))

 (setq	ptd
 (if (= fild "1")
   (if (or (= sens "1") (= sens "2"))
     (setq ptd (modcoor ptd 0.5 0))
     (setq ptd (modcoor ptd -0.5 0))
   )
   (if (= sens "1")
     (
      (setq
	ptd (cons (modcoor ptd 0.2 0.5) (list (modcoor ptd 1 1)))
      )
       (setq lstpt (cons (modcoor (car lstpt) 0 1) (cdr lstpt)))
     )
     (if (= sens "2")
       (
	(setq ptd (cons (modcoor ptd 5 5) (list (modcoor ptd 5 5))))
	 (setq lstpt (cons (modcoor (car lstpt) 5 5) (cdr lstpt)))
       )
       (if (= sens "3")
	 (
	  (setq	ptd
		 (cons (modcoor ptd 10 10) (list (modcoor ptd 10 10)))
	  )
	   (setq lstpt (cons (modcoor (car lstpt) 5 5) (cdr lstpt)))
	 )
	 (if (= sens "4")
	   (
	    (setq ptd (cons (modcoor ptd 20 20)
			    (list (modcoor ptd 20 20))
		      )
	    )
	     (setq
	       lstpt (cons (modcoor (car lstpt) 20 20) (cdr lstpt))
	     )
	   )
	   (nil)
	 )
       )
     )
   )
 )
 )

 (setq lstpt (append ptf lstpt))
 (setq lstpt (append ptd (reverse lstpt)))


 (setq lstpt (mapcar '(lambda (x) (cons 10 x)) lstpt))



 (setq lstpt  (append (list '(0 . "LWPOLYLINE")

		 '(100 . "AcDbEntity")

		 (cons 8 "0")
		 
		 '(100 . "AcDbPolyline")

		 (cons 90 (length lstpt))

		 '(70 . 0)
	   )
	   	lstpt)
 		)
(entmake lstpt)
)

Je sais qu'il beaucoup d'amélioration à faire(des fonction à créer etc..)

Mais je voudrais surtout comprendre l'écart entre Visual qui me donne quelque chose et la commande qui fait une erreur.

 

Merci à vous

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité