Invité space105 Posté(e) le 16 janvier 2011 Posté(e) le 16 janvier 2011 Bonjour, Je cherche une méthode (ou lisp) qui me permettrait de simplifier des polylignes 2D à la volé.Actuellement ces polylignes représentent des courbes de niveaux certaines parties sont très détaillé d'autre beaucoup moins. Le but serait de supprimer certains points trop rapproché et conserver les zones comme telle lorsque les points sont assez éloigné et non pas supprimer un points sur deux. Merci de votre aide.
lecrabe Posté(e) le 16 janvier 2011 Posté(e) le 16 janvier 2011 Hello Avec les outils de nettoyage de dessin (inclus dans MAP ou CIVIL), c facile ! :) par contre avec un AutoCAD ou avec un A D T , il faut une routine Lisp qui demanderait par exemple la longueur minimum d'un segment ou arc et qui en fonction de ce genre de parametre, supprimerait les sommets / vertex inutiles Je n'ai pas souvenir d'avoir vu ce genre de routine ... Le Decapode Autodesk Expert Elite Team
Invité space105 Posté(e) le 16 janvier 2011 Posté(e) le 16 janvier 2011 Merci pour cette réponse rapide. Oui j'ai vu que sous MAP c'est rapide mais hélas je travail sous autoCAD. L'idée est de simplifier un maximum les poly pour me permettre de modéliser rapidement le territoire et d'avoir une qualité de détail identique entre les partie du territoire refaite et celle récupéré. Étant donné que les courbes récupéré sont sur un calque particulier, je peux me contenter d'une méthode de simplification avec suppression de points (1 sur 2) au cas échéant... Puis joindre ensuite à la volé les partie redessiné et récupéré via la commande PE(M).
lecrabe Posté(e) le 16 janvier 2011 Posté(e) le 16 janvier 2011 Hello Tu es un peu paresseux si je puis me permettre car en cherchant, on trouve ceci : http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=23047 http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=25410 Le Decapode Autodesk Expert Elite Team
Invité space105 Posté(e) le 16 janvier 2011 Posté(e) le 16 janvier 2011 Mon second post ne demandait pas de réponse j'avais déjà vu ces liens, mais ces lisp ne répondent pas à mon premier post, car comme tu le soulevais ces lisp ne permettent pas de préciser "la longueur minimum d'un segment ou arc" d'où m'a première interrogation... En tout cas merci quand même. :) ps : De plus linear_nto1 ne s'applique qu'a une polyligne à la fois, j'en ai 8904 a traiter.... [Edité le 16/1/2011 par space105]
bonuscad Posté(e) le 17 janvier 2011 Posté(e) le 17 janvier 2011 De plus linear_nto1 ne s'applique qu'a une polyligne à la fois, j'en ai 8904 a traiter.... Si le principe te convient essayes cette version ! (defun c:linear_nto1 ( / js nb ent dxf_ent typ_ent up_def pt_lst n new_lst) (while (not (setq js (ssget '((0 . "LWPOLYLINE")))))) (initget 7) (setq n (getint "\nNombre de sommet à éliminer? : ")) (repeat (setq nb (sslength js)) (setq ent (ssname js (setq nb (1- nb)))) (setq typ_ent (cdr (assoc 0 (setq dxf_ent (entget ent)))) new_lst '()) (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)) (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)) ) (princ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lecrabe Posté(e) le 17 janvier 2011 Posté(e) le 17 janvier 2011 Hey Bonuscad & Space105 Pour Space105 : OK Sorry pour ma remarque ;) Sinon je viens de tester la routine de Bonuscad "dernier cri", elle fonctionne bien (du moins sur MAP 2004) - Merci :) Neanmoins, SVP je suis preneur comme Spâce105, d'une version un peu differente qui poserait la question de la longueur minimum d'un segment ou arc et qui pourrait traiter N polylignes ! Cela pourrait etre fort utile pour qq'un qui est sous AutoCAD "simple" ou sous A D T :P Le Decapode Autodesk Expert Elite Team
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