Aller au contenu

Placement des styles d'annotation sur polyligne


Messages recommandés

Posté(e)

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!

Posté(e)

Bonjour

Je 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 polyligne

il 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

Posté(e)

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!

Posté(e)

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

Posté(e)

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!

Posté(e)

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

Posté(e)

 

*** 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

Bonjour,

 

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!

Posté(e)

Hello Alala / Fabcad

 

Merci a TOUS pour les routines qui generent un Point (XDATA en fait)

pour les Annotations de MAP ...

 

Commande: XDLIST

Choix 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

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é