Aller au contenu

Supprimer les polylignes et lignes =0


Messages recommandés

Posté(e)

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

 

Posté(e)

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

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é