Aller au contenu

Eliminer certains arcs dans les polylignes 2D


Messages recommandés

Posté(e)

 

Hello

 

Je tiens à remercier Gilles pour cet excellent programme suite à ma demande ! :)

 

Cette routine permet d'éliminer certains arcs sur les polylignes 2D d'AutoCAD

si et seulement SI le rayon est compris entre 2 valeurs précises ET SI l'angle décrit est aussi compris entre 2 valeurs précises :casstet:

 

Cela permet de supprimer par exemple les arcs qui forment des "ponts" dans les dessins de réseaux ou canalisations pour montrer que le réseau (ou cana) passe au dessus (ou en dessous) d'un autre réseau (ou cana) !

 

Les outils de nettoyage de MAP ne permettent pas du tout ce genre de traitement !

 

 


;; Routine d elimination des arcs par GC
;; Criteres de selection : 
;; entre rayon mini et rayon maxi
;; entre angle mini et angle maxi

(vl-load-com)
(defun c:RectArc (/ rmin rmax amin amax ss n pl elst plst blst edit ang)
 (or (setq rmin (getdist "\nRayon minimum : "))
     (setq rmin 0.2)
 )
 (or (setq rmax (getdist "\nRayon maximum : "))
     (setq rmax 0.8)
 )
 (or (setq amin (getangle "\nAngle minimun : "))
     (setq amin (* (/ pi 18) 17))
 )
 (or (setq amax (getangle "\nAngle maximun : "))
     (setq amax (* (/ pi 18) 19))
 )
 (setq n 0)
 (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
   (while (setq pl (ssname ss n))
     (setq elst (entget pl)
       plst (massoc 10 elst)
       blst (massoc 42 elst)
       edit nil
       n (1+ n)
     )
     (while (cadr plst)
   (if
     (and
       (        (        (/ (distance (cdar plst) (cdadr plst))
          (* 2 (sin (/ ang 2)))
       )
       rmax
       )
     )
      (setq elst (subst '(42 . 0.0) (car blst) elst)
        edit T
      )
   )
   (setq plst (cdr plst)
         blst (cdr blst)
   )
     )
     (and edit (entmod elst))
   )
 )
 (princ)
)

;; MASSOC
;; Retourne la liste de toutes les entrées du code spécifié d'une liste 
d'association
;;
;; Arguments
;; code : le code de groupe pour les entrées
;; lst : la liste d'association

(defun massoc (code lst)
 (apply 'append
    (mapcar
      '(lambda (x)
         (if (= (car x) code)
       (list x)
         )
       )
      lst
    )
 )
)

 

Bon WE, 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é