Aller au contenu

Suppression Automatique points d\'une polyligne


philous2

Messages recommandés

Bjr,

 

En fait je me suis mal exprimé

Je ne sais pas si cela existe sur le site, mais je recherche une commande ou lisp pouvant supprimer rapidement et automatiquement ou plusieurs points intermédiaires d'une polyligne(1 sur 2) comme le contour des différentes communes d'un département, etc...

Comme la routine AddVtx&DelVtx : de Gile mais automatique en sélectionnant les polylignes en question

 

Merci d'avance de vos remarques ou idées

 

Phil

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Un truc que j'avais fais pour un besoin précis et peu utilisé pour alléger le nombre de sommet sur une LWPOLYLINE.

Le code demanderais certainement à être amélioré...

 

(defun c:linear_nto1 ( / ent dxf_ent typ_ent up_def pt_lst n new_lst)
(while (not (setq ent (entsel "\nChoisir une polyligne2D: "))))
(setq typ_ent (cdr (assoc 0 (setq dxf_ent (entget (car ent))))) new_lst '())
(cond
	((eq typ_ent "LWPOLYLINE")
		(setq up_def (vl-remove-if '(lambda (x) (or (= (car x) 10) (= (car x) 40) (= (car x) 41) (= (car x) 42))) dxf_ent))
		(setq pt_lst (vl-remove-if-not '(lambda (x) (or (= (car x) 10) (= (car x) 40) (= (car x) 41) (= (car x) 42))) dxf_ent))
		(initget 7)
		(while (> (setq n (getint (strcat "\nNombre de sommet à éliminer? Maxi <" (itoa (/ (length pt_lst) 4)) ">: "))) (/ (length pt_lst) 4))
			(princ "\nNombre de sommet à éliminer supérieur à celui existant!")
			(initget 7)
		)
		(while pt_lst
			(setq new_lst (append (mapcar '(lambda (x) (nth x pt_lst)) '(0 1 2 3)) new_lst))
			(setq pt_lst (cddddr pt_lst))
			(repeat n
				(if (cdr pt_lst) (setq pt_lst (cddddr pt_lst)))
			)
		)
		(setq up_def (subst (cons 90 (/ (length new_lst) 4)) (assoc 90 up_def) up_def))
		(entmod (append (subst (cons 90 (/ (length new_lst) 4)) (assoc 90 up_def) up_def) new_lst))
	)
	(T
		(princ "\nN'est pas une polyligne 2D optimisée!") 
	)
)
(princ)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é