alala Posté(e) le 28 mars 2013 Posté(e) le 28 mars 2013 Bonjour, un petit soucis se pose à moi aujourdhui. Je travail sur un projet en linéaire. Je souhaite placer des styles d'annotation au centre d'un polyligne, hors si je choisit .CENTROID ou .CENTER en choix de placement je me retrouve toujours avec mon annotation placé au centre de gravité de ma polyligne et donc en dehors de mon linéaire. Avez vous une astuce pour forcer le placement au centre ET sur la polyligne? merci d'avance. C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
jcouaknine Posté(e) le 28 mars 2013 Posté(e) le 28 mars 2013 BonjourJe suppose que tu utilise un AutoCAD Map ou Civil 201X.Aussi tu dois te servir du gabarit d annotations. Pour cela il faut que tu utilises comme point d insertion le LABELPT. Afin que l annotation se place au centre de la polyligneil faut malheureusement que pour chaque polyligne tu lances la CMD ADETEXTLOC et que tu modifies le point d insertion qui au depart se trouve au centre de gravite vers le milieu de la polyligne. En esperant avoir repondu a ta demande Cordialement
alala Posté(e) le 28 mars 2013 Auteur Posté(e) le 28 mars 2013 Bonjour, je cherchais justement à me passer d'une attribution manuelle du point d'insertion de l'annotation. Je vais voir si il n'est pas possible de faire un petit lisp qui definisse cela pour moi car je me vois mal passer en revus toutes les polylignes de tous mes plans pour effectuer cette opération. Merci pour cette réponse. C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
lecrabe Posté(e) le 28 mars 2013 Posté(e) le 28 mars 2013 Hello Malheureusement je crois que les "bons vieux" Gabarits d'Annotation de MAP ne permettent pas (A verifier) de saisir une ligne d'expression en Lisp ou l'on pourrait imaginer controler un peu le placement de l'annotation ! Par exemple : au milieu du 1er segment de la Polyligne ainsi on est sur d'etre dessus ... Maintenant si tu crees un progr Lisp/VLisp qui fait une commande ADETEXTLOC "subtile" sur les Polylignes selectionnees, alors LA SVP je suis preneur ! Car apres les Annotations seront bien placees !! A mon avis, il y a 2 cas a traiter : *** 1 *** - Les Polylignes ouvertes : bordures, limites, canalisations, reseaux, etc *** 2 *** - Les Polylignes closes et MPolygons : les objets surfaciques en fait Et LA c beaucoup plus complique !!Comment detecter que le Centroid se trouve qq part a l'exterieur ?Et dans ce cas, faire un ADETEXTLOC subtil qq part a l'interieur ! lecrabe Autodesk Expert Elite Team
alala Posté(e) le 28 mars 2013 Auteur Posté(e) le 28 mars 2013 POur le cas en question j'ai donc créer un LISP de placement au centre des polylignes/lignes/arc/Splines.J'assure que cela fonctionne en polylignes non closes, mais il peu y avoir des cas un peu particuliers donc à tester. Reste que si l'on laisse l'angle se faire tout seul (.ANGLE) l'on est sur l'angle de l'objet au centroïde et non à l'endroit ou se trouve l'annontation sur l'objet. Voici donc : (defun c:AnnoAuCentre (/ Adoc ss pl) (vl-load-com) (setq Adoc (vla-get-ActiveDocument (vlax-get-acad-object))) (princ "Sélectionner les polylignes pour placer les annotation au centre de celles-ci : \n" ) (if (setq ss (ssget '( (-4 . "<OR") (0 . "LWPOLYLINE,LINE,SPLINE,ARC") (-4 . "<AND") (0 . "POLYLINE") (-4 . "<NOT") (-4 . "&") (70 . 112) (-4 . "NOT>") (-4 . "AND>") (-4 . "OR>") (410 . "MODEL") ) ) ) (vlax-for pl (vla-get-ActiveSelectionSet Adoc) (ade_editdefcen (vlax-vla-object->ename pl) (vlax-curve-getPointAtdist pl (/ (vlax-curve-getdistatparam pl (vlax-curve-getEndParam pl)) 2 ) ) ) ) ) ) Me reste quelques soucis à régler avec ces annotation, tel que l'angle de celle-ci en fonction du point de placement, et la si vous avez une astuce je vous en serai vraiment reconnaissant. Merci à vous. C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
fabcad Posté(e) le 28 mars 2013 Posté(e) le 28 mars 2013 Bonjour à Tous, Alala est allé plus vite que moi mais je partage mon code. Pour info, la commande de changement de point label se nomme : ADETEXTLOC. Fabcad Le Rennais Metropolitain ;;;------------------------------------------------------------------------ ;;; Sous-routine de récupération du point milieu d'une polyligne ;;;------------------------------------------------------------------------ (defun mid_pl (pl) (vl-load-com) (vlax-curve-getPointAtDist pl (/ (vlax-curve-getDistAtParam pl (vlax-curve-getEndParam pl) ) 2.0 ) ) ) ;------------------------------------------------------------------------ (defun c:new_label_pt (/ selection_en_cours obj_acad nombre_objets compteur) (vl-load-com) (setq selection_en_cours (ssget (list (cons 0 "*LWPOLYLINE")))) (setq nombre_objets (sslength selection_en_cours)) (setq compteur 0) (while (<= compteur (- nombre_objets 1)) (setq obj_acad (ssname selection_en_cours compteur)) (setq new_label_pt (mid_pl obj_acad)) (ade_editdefcen obj_acad new_label_pt) (setq compteur (+ compteur 1)) ); fin while (prompt "\n---Mars 2013 Fabrice DEMIEL---") ); fin c:new_label_pt
alala Posté(e) le 28 mars 2013 Auteur Posté(e) le 28 mars 2013 *** 2 *** - Les Polylignes closes et MPolygons : les objets surfaciques en fait Et LA c beaucoup plus complique !!Comment detecter que le Centroid se trouve qq part a l'exterieur ?Et dans ce cas, faire un ADETEXTLOC subtil qq part a l'interieur ! lecrabeBonjour, L'option .CENTRE met l'annotation au centre de la polyligne (ou surfacique divers) close quand l'option .CENTROID prend bel est bien le centre de gravité de la surface, quelle soit à l'intérieur ou à l'extérieur de celle-ci. Donc ce cas ne necessite pas réelement de dévellopement selon moi. @+ C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
lecrabe Posté(e) le 28 mars 2013 Posté(e) le 28 mars 2013 Hello Alala / Fabcad Merci a TOUS pour les routines qui generent un Point (XDATA en fait) pour les Annotations de MAP ... Commande: XDLISTChoix de l'objet:Enter application name : * Registered Application Name: ADE* Code 1011, 3D World space position: (3.7187 -8.3392 0) Merci, lecrabe Autodesk Expert Elite Team
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