Aller au contenu

besoin de verifier un lisp


TPS001

Messages recommandés

Bonjour à toutes et à tous.

 

je ne connais rien sur la programmation lisp et Comme indiqué en titre, j'ai trouvé ce lisp dans une forum c'est un lisp qui créer des gaines flexibles et quand je le charger ,je dessine un ligne et je fais le choix d'objet et quand je selectionne la ligne il me demande duct size et il indique sur la boite de commande les erreures suivantes :

choix des objets:

 

Duct size : 100

Commande inconnue "PLINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "PLINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "FX". Appuyez sur F1 pour obtenir de l'aide.

Commande inconnue "LINE". Appuyez sur F1 pour obtenir de l'aide.

; erreur: Fonction annulée

est ce qu'il y a quelqu'un qui peut m'aider et merci pour touts

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Le LISP que tu as trouvé a certainement été écrit pour une version anglaise.

Par exemple :

(command "PLINE" ...) ne fonctionne que sur une version anglaise

(command "POLYLIGN" ...) ne fonctionne que sur une version française

(command "_PLINE" ...) fonctionnera sur toutes les versions

 

Tu peux donc essayer "d'internationaliser" le code en faisant précéder tous les noms de commande et de leurs options par un underscore (_).

 

Il n'est pas certain que ce soit suffisant pour que le LISP fonctionne bien, mais ça me semble incontournable.

Tu peux aussi t'adresser à l'auteur du LISP, pour lui expliquer le problème.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

J'ai expliqué ce qu'il fallait faire pour corriger :

Tu peux donc essayer "d'internationaliser" le code en faisant précéder tous les noms de commande et de leurs options par un underscore (_).

 

Il suffit donc de remplacer, par exemple :

(command "ucs" "w") par (command "_ucs" "_w")

de même pour (command "pline" ...) et (command "line" ...)

 

(defun dtr (d)
 (/ (* d pi) 180)
)

(defun rtd (r)
 (/ (* r 180) pi)
)

(defun C:FX ()
 (setvar "osmode" 0)
 (command "_ucs" "_w")
 (setq ar_ents (ssget '((0 . "ARC,LINE"))))
 (setq d_sz (getreal "\nDuct size : "))
 (setq	flex_ctr 0
flex_len (sslength ar_ents)
 )
 (repeat flex_len
   (setq ar_ent (ssname ar_ents flex_ctr))
   (setq ar_data (entget ar_ent)
  e_typ	  (cdr (assoc 0 ar_data))
  j_d	  50
  pt1_lst '()
  pt2_lst '()
   )
   (if	(= e_typ "ARC")
     (progn
(setq ar_rad (cdr (assoc 40 ar_data))
      ar_cpt (cdr (assoc 10 ar_data))
      s_ang  (rtd (cdr (assoc 50 ar_data)))
      e_ang  (rtd (cdr (assoc 51 ar_data)))
      ar_ang (+ (- e_ang s_ang) 360)
)
(if (>= ar_ang 360)
  (setq ar_ang (- ar_ang 360))
)
(setq a_len (/ (* 2 pi ar_rad ar_ang) 360.0))
(setq n_jo (atoi (rtos (/ a_len j_d) 2 0)))
(setq di_ang (/ ar_ang n_jo 2.0)
      st_ang s_ang
)
(repeat	n_jo
  (setq
    pt_1 (polar ar_cpt (dtr st_ang) (- ar_rad (/ d_sz 2.0)))
  )
  (setq pt1_lst (append pt1_lst (list pt_1)))
  (setq
    pt_2 (polar ar_cpt (dtr st_ang) (+ ar_rad (/ d_sz 2.0)))
  )
  (setq pt2_lst (append pt2_lst (list pt_2)))
  (setq st_ang (+ st_ang di_ang))
  (setq	pt_3 (polar ar_cpt
		    (dtr st_ang)
		    (+ (- ar_rad (/ d_sz 2.0)) (/ j_d 2.0))
	     )
  )
  (setq pt1_lst (append pt1_lst (list pt_3)))
  (setq	pt_4 (polar ar_cpt
		    (dtr st_ang)
		    (- (+ ar_rad (/ d_sz 2.0)) (/ j_d 2.0))
	     )
  )
  (setq pt2_lst (append pt2_lst (list pt_4)))
  (setq st_ang (+ st_ang di_ang))
)
(setq pt_1 (polar ar_cpt (dtr st_ang) (- ar_rad (/ d_sz 2.0))))
(setq pt1_lst (append pt1_lst (list pt_1)))
(setq pt_2 (polar ar_cpt (dtr st_ang) (+ ar_rad (/ d_sz 2.0))))
(setq pt2_lst (append pt2_lst (list pt_2)))
     )
   )
   (if	(= e_typ "LINE")
     (progn
(setq l_stpt (cdr (assoc 10 ar_data))
      l_enpt (cdr (assoc 11 ar_data))
      l_leng (distance l_stpt l_enpt)
      n_jo   (atoi (rtos (/ l_leng j_d) 2 0))
      j_dis  (/ l_leng n_jo 2.0)
      f_ang  (angle l_stpt l_enpt)
      lpt_1  l_stpt
)
(repeat	n_jo
  (setq jpt_1 (polar lpt_1 (+ (dtr 90) f_ang) (/ d_sz 2.0)))
  (setq pt1_lst (append pt1_lst (list jpt_1)))
  (setq jpt_2 (polar lpt_1 (+ (dtr 270) f_ang) (/ d_sz 2.0)))
  (setq pt2_lst (append pt2_lst (list jpt_2)))
  (setq lpt_1 (polar lpt_1 f_ang j_dis))
  (setq	jpt_3 (polar lpt_1
		     (+ (dtr 90) f_ang)
		     (- (/ d_sz 2.0) (/ j_d 2.0))
	      )
  )
  (setq pt1_lst (append pt1_lst (list jpt_3)))
  (setq	jpt_4 (polar lpt_1
		     (+ (dtr 270) f_ang)
		     (- (/ d_sz 2.0) (/ j_d 2.0))
	      )
  )
  (setq pt2_lst (append pt2_lst (list jpt_4)))
  (setq lpt_1 (polar lpt_1 f_ang j_dis))
)
(setq jpt_1 (polar lpt_1 (+ (dtr 90) f_ang) (/ d_sz 2.0)))
(setq pt1_lst (append pt1_lst (list jpt_1)))
(setq jpt_2 (polar lpt_1 (+ (dtr 270) f_ang) (/ d_sz 2.0)))
(setq pt2_lst (append pt2_lst (list jpt_2)))
     )
   )
   (command "_pline" (foreach n pt1_lst (command n)))
   (command "_pline" (foreach n pt2_lst (command n)))
   (setq l_ctr 0)
   (repeat (+ (* n_jo 2) 1)
     (command "_line" (nth l_ctr pt1_lst) (nth l_ctr pt2_lst) "")
     (setq l_ctr (1+ l_ctr))
   )
   (setq flex_ctr (1+ flex_ctr))
 )					;repeat
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

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é