Fraid Posté(e) le 11 septembre 2007 Posté(e) le 11 septembre 2007 Bonjour, je voudrai supprimer les polylignes et lignes ayant une longueur egal a zero j'ai bien trouvé un lisp qui permet de le faire http://www.cadxp.com/sujetXForum-9727.htm mais voulans l'inclure dans un autre lisp j'ai voulus supprimer les invites de commande j'ai beau verifier les parenthese avec visual lisp cela ne veut pas fonctionner (defun c:del_line_by_dist (/ dis_ref js nb_ent n key ent dxf_ent lst dxf_10 dxf_11 dis_ent) (setq dis_ref 0) (setq js (ssget "_X" '((0 . "LINE,LWPOLYLINE")))) (setq key "=") (setq ent (ssname js (setq n (1+ n))) dxf_ent (entget ent) ) (cond ((eq (cdr (assoc 0 dxf_ent)) "LINE") (setq dxf_10 (cdr (assoc 10 dxf_ent)) dxf_11 (cdr (assoc 11 dxf_ent)) ) ) ((and (eq (cdr (assoc 0 dxf_ent)) "LWPOLYLINE") (eq (cdr (assoc 90 dxf_ent)) 2) ) (setq lst (mapcar '(lambda (x) (trans x ent 1)) (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent) ) ) dxf_10 (car lst) dxf_11 (cadr lst) ) ) (T (setq dxf_10 nil dxf_11 nil ) ) ) (if (and dxf_10 dxf_11) (progn (setq dis_ent (distance (list (car dxf_10) (cadr dxf_10)) (list (car dxf_11) (cadr dxf_11)) ) ) (if ((eval (read key)) dis_ent dis_ref) (progn (entdel ent) (setq nb_ent (1+ nb_ent)) ) ) ) ) (T (princ "\nAucune ligne trouvée!")) (print nb_ent) (princ " Ligne(s) ont été effacées!.") (prin1)) si quelqu'un pouvait me dire pourquoi merci https://github.com/Fraiddd
bonuscad Posté(e) le 11 septembre 2007 Posté(e) le 11 septembre 2007 si quelqu'un pouvait me dire pourquoi Tu as omis de garder une ligne concernant l'initialisation des variables (setq nb_ent 0 n -1) En le tournant à ton désir, on peut supprimer 2 variables qui ne servent plus (dis_ref & key) et en modification rapide, cela donnerai: (defun c:del_line_by_dist ( / js nb_ent n ent dxf_ent lst dxf_10 dxf_11 dis_ent) (setq js (ssget "_X" '((0 . "LINE,LWPOLYLINE")))) (cond (js (setq nb_ent 0 n -1) (repeat (sslength js) (setq ent (ssname js (setq n (1+ n))) dxf_ent (entget ent) ) (cond ((eq (cdr (assoc 0 dxf_ent)) "LINE") (setq dxf_10 (cdr (assoc 10 dxf_ent)) dxf_11 (cdr (assoc 11 dxf_ent)) ) ) ((and (eq (cdr (assoc 0 dxf_ent)) "LWPOLYLINE") (eq (cdr (assoc 90 dxf_ent)) 2) ) (setq lst (mapcar '(lambda (x) (trans x ent 1)) (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent))) dxf_10 (car lst) dxf_11 (cadr lst) ) ) (T (setq dxf_10 nil dxf_11 nil)) ) (if (and dxf_10 dxf_11) (progn (setq dis_ent (distance (list (car dxf_10) (cadr dxf_10)) (list (car dxf_11) (cadr dxf_11)))) (if (= dis_ent 0.0) (progn (entdel ent) (setq nb_ent (1+ nb_ent)) ) ) ) ) ) (print nb_ent) (princ " Ligne(s) ont été effacées!.") ) (T (princ "\nAucune ligne trouvée!")) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Fraid Posté(e) le 11 septembre 2007 Auteur Posté(e) le 11 septembre 2007 Merci https://github.com/Fraiddd
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant