philous2 Posté(e) le 11 mars 2009 Posté(e) le 11 mars 2009 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
bonuscad Posté(e) le 11 mars 2009 Posté(e) le 11 mars 2009 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
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