Aller au contenu

Simplification de polylignes 2D


Messages recommandés

Invité space105
Posté(e)

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.

Posté(e)

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)

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).

Invité space105
Posté(e)

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]

Posté(e)

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

Posté(e)

 

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

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é