Décaler une polyligne en conservant les 2 extrémités

Décaler une polyligne en conservant les 2 extrémités

Anonymous
Non applicable
1 748 Visites
4 Réponses
Message 1 sur 5

Décaler une polyligne en conservant les 2 extrémités

Anonymous
Non applicable

Bonjour à tous,

Je travaille actuellement sur un projet de pose de câbles. Sur le plan, je me retrouve avec x câbles superposés, mon client me demande donc de décaler chaque polyligne afin d'éviter la superposition. C'est là que j'ai besoin de votre aide, je cherche un moyen (lisp, astuce, routine...) pour décaler ma polyligne, mais en conservant les points de départ et de fin de celle-ci. Contrainte supplémentaire, je ne peux pas utiliser de multilignes, et chaque polyligne doit être sur un calque différent.

Merci d'avance pour votre aide.

Bonne journée

0 J'aime
Solutions acceptées (1)
1 749 Visites
4 Réponses
Replies (4)
Message 2 sur 5

_gile
Consultant
Consultant
Solution acceptée

Salut,

 

Comme je n'ai ni le temps ni l'envie de refaire ce que fait très bien la commande DECALER, je te propose une solution 'a posteriori'. On sélection d'abord la polyligne source, puis toutes les polyligne devant avoir les mêmes point de départ et de fin que la polyligne source.

 

(defun c:test (/ pl el ss sp ep i)
  (and
    (setq pl (car (entsel "\nPolyligne source: ")))
    (setq el (entget pl))
    (= (cdr (assoc 0 el)) "LWPOLYLINE")
    (setq ss (ssget '((0 . "LWPOLYLINE"))))
    (setq sp (assoc 10 el)
	  ep (assoc 10 (reverse el))
    )
    (repeat (setq i (sslength ss))
      (setq el (reverse (entget (ssname ss (setq i (1- i)))))
	    el (reverse (subst ep (assoc 10 el) el))
      )
      (entmod (subst sp (assoc 10 el) el))
    )
  )
  (princ)
)


Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

0 J'aime
Message 3 sur 5

Anonymous
Non applicable

 Merci pour votre réponse, et désolée pour le doublon, je souhaitais juste optimiser mes chances, je le préciserais la prochaine fois.

 

Après avoir testé, c'est exactement ce que je souhaitais.

 

Merci beaucoup,

 

Encore une fois désolée pour le doublon

 

0 J'aime
Message 4 sur 5

_gile
Consultant
Consultant

Il s'agit d'une routine LISP qui définit une commande nommée TEST.

 

Il est possible de changer le nom de la commande en remplaçant : c:test par le nouveau nom mais en conservant le préfixe c: (par exemple c:toto pour une commande nommée TOTO).

 

Pour charger un LISP (versions pleines uniquement) voir ce sujet.

 

Une fois le LISP chargé dans le dessin, lancer la commande, sélectionner la polyligne source, puis les polylignes à traiter. 



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

0 J'aime
Message 5 sur 5

braudpat
Mentor
Mentor

 

Hello Gilles

 

1) Merci pour la routine ! ... Je vais l'utiliser ...

 

2) J'imagine que la version qui traiterait AUSSI les Polylignes "splinees et courbees" n'est pas simple !! 

 

3) Sans parler d'une version qui s'occuperait des 3DPolys ("splinees" ou Non) !!!

 

Regards, Patrice

 

 

Patrice ( Supporting Troops ) - Autodesk Expert Elite
If you are happy with my answer please mark "Accept as Solution" and if very happy please give me a Kudos (Felicitations) - Thanks

Patrice BRAUD

EESignature


0 J'aime