Aller au contenu

Besoin d\'aide !!


Messages recommandés

Posté(e)

Bonjour à toutes et à tous,

 

j'ai récupéré ce lisp [surligneur]BREAK.LSP[/surligneur] (Décompose une polyligne et arc en conservant leurs épaisseurs)........mais voilà, je le charge comme les autres et en réponse à la commande j'ai " commande inconnue...".

N'ayant aucune connaissance en lisp, pouvez vous m'aider..?? Merci d'avance.

 

 

(defun c:break_lw ( / js i ent dxf_obj dxf_43 dxf_38 dxf_39 dxf_10 dxf_40 dxf_41 dxf_42 dxf_39 dxf_210 n)

(initget "Toutes Sélection _All Select")

(if (eq (getkword "\nLWPolylignes à couper à chaque sommets? [Toutes/Sélection] : ") "All")

(setq

js

(ssget "_X"

(list

(cons 0 "LWPOLYLINE")

(cons 67 (if (eq (getvar "CVPORT") 2) 0 1))

(cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))

)

)

i -1

)

(setq

js

(ssget

(list

(cons 0 "LWPOLYLINE")

(cons 67 (if (eq (getvar "CVPORT") 2) 0 1))

(cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))

)

)

i -1

)

)

(cond

(js

(repeat (sslength js)

(setq dxf_obj (entget (setq ent (ssname js (setq i (1+ i))))))

(if (cdr (assoc 43 dxf_obj))

(setq dxf_43 (cdr (assoc 43 dxf_obj)))

(setq dxf_43 0.0)

)

(if (cdr (assoc 38 dxf_obj))

(setq dxf_38 (cdr (assoc 38 dxf_obj)))

(setq dxf_38 0.0)

)

(if (cdr (assoc 39 dxf_obj))

(setq dxf_39 (cdr (assoc 39 dxf_obj)))

(setq dxf_39 0.0)

)

(setq

dxf_10 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_obj))

dxf_40 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 40)) dxf_obj))

dxf_41 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 41)) dxf_obj))

dxf_42 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 42)) dxf_obj))

dxf_210 (cdr (assoc 210 dxf_obj))

)

(if (not (zerop (boole 1 (cdr (assoc 70 dxf_obj)) 1)))

(setq

dxf_10 (append dxf_10 (list (car dxf_10)))

dxf_40 (append dxf_40 (list (car dxf_40)))

dxf_41 (append dxf_41 (list (car dxf_41)))

dxf_42 (append dxf_42 (list (car dxf_42)))

n (cdr (assoc 90 dxf_obj))

)

(setq n (1- (cdr (assoc 90 dxf_obj))))

)

(repeat n

(entmake

(list

(cons 0 "LWPOLYLINE")

(cons 100 "AcDbEntity")

(assoc 67 dxf_obj)

(assoc 410 dxf_obj)

(assoc 8 dxf_obj)

(if (assoc 62 dxf_obj) (assoc 62 dxf_obj) (cons 62 256))

(if (assoc 6 dxf_obj) (assoc 6 dxf_obj) (cons 6 "BYLAYER"))

(if (assoc 370 dxf_obj) (assoc 370 dxf_obj) (cons 370 -1))

(cons 100 "AcDbPolyline")

(cons 90 2)

(cons 70 (boole 1 (cdr (assoc 70 dxf_obj)) 128))

(cons 38 dxf_38)

(cons 39 dxf_39)

(cons 10 (car dxf_10))

(cons 40 (car dxf_40))

(cons 41 (car dxf_41))

(cons 42 (car dxf_42))

(cons 10 (cadr dxf_10))

(cons 40 (cadr dxf_40))

(cons 41 (cadr dxf_41))

(cons 42 (cadr dxf_42))

(assoc 210 dxf_obj)

)

)

(setq dxf_10 (cdr dxf_10) dxf_40 (cdr dxf_40) dxf_41 (cdr dxf_41) dxf_42 (cdr dxf_42))

)

(entdel ent)

)

(print (sslength js)) (princ " LWpolyligne(s) coupée(s) à ses sommets.")

)

)

(prin1)

)

 

 

 

 

..............et bon Week-end ;)

Posté(e)

Salut,

 

Il faut taper break_lw à la ligne de commande.

 

En LISP, les fonctions qui définissent une commande commencent par (defun c:NomDeLaCommande ...)

 

Je dirais que le LISP est de Bonuscad, il fonctionne très bien.

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

Posté(e)

Le fichier .lsp peut s'appeler autrement que la fonction ou les fonctions qui sont dedans. Là la fonction s'appelle break_lw et fonctionne très bien

 

Amicalement

 

Zebulon_

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

.....je vous l'avais bien dit que je n'y connaissait rien.............!!!!! ;) ;) ;)

Effectivement il est bien de Bonuscad.

Merci beaucoup de votre aide,

Sylvain.

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é