Aller au contenu

Polyligne en ligne de reperes


Messages recommandés

Posté(e)

Bonjour,

 

je suis utilisateur de Autocad map 3d 2007..

 

J'aimerai pouvoir transformer des polylignes en lignes de reperes, est-ce possible?? Si non, j'en ai 1065 à mfaire à la mimine :mad: .......

 

Si qlqun avait une petite soluce sa serai fort appréciable..

 

Merci et bonne fêtes de fin d'années à Tous

Le ridicule ne tue pas, il te rend plus fort!

Posté(e)

Salut,

 

Un petit truc vite fait.

 

Il faut sélectionner les polylignes une par une et les "piquer" du côté où tu veux la pointe de la flèche.

 

(defun c:pline2leader (/ pl elst)
 (vl-load-com)
 (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
 (while (and
   (setq pl (entsel "\nSélectionner une polyligne du côté de la pointe de flèche: "))
   (= "LWPOLYLINE" (cdr (assoc 0 (setq elst (entget (car pl))))))
 )
   (setq ptlst	(vl-remove-if-not '(lambda (x) (= (car x) 10)) elst)
  pick	(osnap (cadr pl) "_nea")
  norm (trans '(0 0 1) 1 0 T)
   )
   (if (	   (distance (trans pick 1 norm) (cdar ptlst)))
     (setq ptlst (reverse ptlst))
     )
   (entmake
     (append '((0 . "LEADER")
	(100 . "AcDbEntity")
	(100 . "AcDbLeader")
       )
      ptlst
     )
   )
   (entdel (car pl))
 )
 (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
 (princ)
)

 

On peut faire une sélection de plusieurs polylignes à la fois mais on perd le contrôle sur la position de cette pointe de flèche. Ça peut marcher si toutes les polylignes ont été dessinées dans le "bon" sens.

 

(defun c:plss2leader (/ ss)
 (vl-load-com)
 (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
 (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
   (foreach pl	(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
     (setq ptlst (vl-remove-if-not
	    '(lambda (x) (= (car x) 10))
	    (entget pl)
	  )
     )
     (entmake
(append	'((0 . "LEADER")
	  (100 . "AcDbEntity")
	  (100 . "AcDbLeader")
	 )
	ptlst
)
     )
     (entdel pl)
   )
 )
 (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
 (princ)
)

 

[Edité le 27/12/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Re,

 

Vu le nombre de polylignes à traiter, la deuxième routine (plss2leader) devrait plus t'intéresser.

Si d'aventure certaines polylignes étaient dans le "mauvais sens", en voici une autre qui replace la pointe de la flèche à l'autre extrémité.

 

(defun c:reverseleader (/ ss elst)
 (vl-load-com)
 (vla-StartUndoMark
   (vla-get-ActiveDocument (vlax-get-acad-object))
 )
 (if (setq ss (ssget '((0 . "LEADER"))))
   (foreach lead (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
     (setq elst (entget lead))
     (entmod
(append	(vl-remove-if '(lambda (x) (= (car x) 10)) elst)
	(reverse
	  (vl-remove-if-not '(lambda (x) (= (car x) 10)) elst)
	)
)
     )
   )
 )
 (vla-EndUndoMark
   (vla-get-ActiveDocument (vlax-get-acad-object))
 )
 (princ)
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour Gile,

 

Merci pour cette soluce.. mais je nariv pas à l'appliquer......... pardonnez mon inculture, je ne c pas si il faut que j'en fasse un fichier lisp ou que sais-je???????!!!!!!!!.... :( :( ..

 

A+, Joff

Le ridicule ne tue pas, il te rend plus fort!

Posté(e)

Re,

 

En fait g trouvé le truc, franchement sa marche super bien, sa fait plaisir, jme demande bien ou tu as trouvés sa c'est costaud :o..... :cool:

 

Bref, grand merci à Toi Gile

 

Tchao..

Le ridicule ne tue pas, il te rend plus fort!

Posté(e)

Ça me fait plaisir d'avoir pu t'aider.

 

jme demande bien ou tu as trouvés sa

Il arrive qu'on trouve des routines "toutes faites" qui correspondent à ce qu'on cherche, mais il a bien fallu que quelqu'un les écrive.

Celles-ci sont de mon cru, faites pour l'occasion, et j'ai aussi pris du plaisir à les faire.

 

[Edité le 28/12/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é