Joffoon Posté(e) le 27 décembre 2006 Posté(e) le 27 décembre 2006 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!
(gile) Posté(e) le 27 décembre 2006 Posté(e) le 27 décembre 2006 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
(gile) Posté(e) le 27 décembre 2006 Posté(e) le 27 décembre 2006 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
Joffoon Posté(e) le 28 décembre 2006 Auteur Posté(e) le 28 décembre 2006 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!
Joffoon Posté(e) le 28 décembre 2006 Auteur Posté(e) le 28 décembre 2006 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!
(gile) Posté(e) le 28 décembre 2006 Posté(e) le 28 décembre 2006 Ç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
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