Aller au contenu

ANNOTATIONS "COMPOSEES"


Messages recommandés

Posté(e)

Bonjour à toutes et tous,

 

Pour indiquer l'aire avec le formatage souhaitée d'une parcelle, cette expression lisp fonctionne parfaitement =>

 

 

 

Je souhaiterai maintenant uniquement écrire "N° Tranchée = Ma donnée d'objet"

 

Est ce que cette syntaxe est correcte ?

 (STRCAT "N° TRANCHEE = " (RTOS DONNEES D’OBJET]) 

 

Je ne peux pas tester actuellement,..

 

Merci d'avance,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Hello

 

Juste un copier / coller sans reflechir & sans MAP :

 

*** Contenu du champ numerique PNT_ALTITIDE de la Table TABLE_PNT avec 2 decimales (si necessaire) ***

(STRCAT (RTOS :PNT_ALTITUDE@TABLE_PNT 2 0 ) )

 

*** Aire/Surface des objets clos (Polyligne close, Cercle, etc) avec ZERO decimale et le suffixe m²

(STRCAT (RTOS .AREA 2 0) "m²" )

 

SVP tu nous diras !?

 

Bye, lecrabe

Autodesk Expert Elite Team

Posté(e)

Bonjour,

 

J'ai créé cette routine pour créer sur des polylignes (closes ou non) des Mtextes issues de la sélection de valeurs de champs de Tables de Données d'Objets.

 

il faudrait ajouter ton préfixe "N° TRANCHEE = " dans la sous-fonction Creation_Etiquette.

 

C'est plus facile de créer des Mtextes que de créer des Annotations MAP (Usine à gaz pour créer des étiquetages simples). Il serait tellement plus simple de convertir en objets textes ou Mtextes l'étiquetage sur des objets AutoCAD+Données d'Objets depuis le Volet Taches.

 

Fabcad

 

Le Rennais Métropolitain

Ecrire_Etiquettes-OD-avec-choix-v3.lsp

Posté(e)

Bonsoir à toutes et tous,

 

Salut Patrice,

 

(STRCAT (RTOS .AREA 2 0) "m²" )

 

Oui, ça marche, c'est ce que j'ai mis sur l'image ci dessus,...C'est pour ça qu'en m'inspirant de cette écriture, il me semblait qu'il était possible d'écrire cette annotation "composées" de texte et de OD

 

(STRCAT (RTOS :PNT_ALTITUDE@TABLE_PNT 2 0 ) )

 

 

C'est un peu le même pricipe que pour l'aire.

 

Ma demande semble plus simple en écriture mais je ne sais pas si la syntaxe est ok, je vais tester dés que possible, ça donnerait donc ? =>

 

 (STRCAT "N° TRANCHEE = " (RTOS DONNEES D’OBJET]) 

 

 

 

 

Salut Fabcad le Rennais,

 

Merci pour ta routine, je teste dés que possible,...

 

Il serait tellement plus simple de convertir en objets textes ou Mtextes l'étiquetage sur des objets AutoCAD+Données d'Objets depuis le Volet Taches.

 

 

En effet !:(

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Bonjour à toutes et tous,

 

J'ai testé ce matin, cette expression correspond bien à mon besoin,..

 

(STRCAT "TR " (RTOS :N@SONDAGE))

 

Fabcad,

 

 

il faudrait ajouter ton préfixe "N° TRANCHEE = " dans la sous-fonction Creation_Etiquette.

 

Heu, j'ai bien vu cette sous fonction dans ton lisp, mais quelles sont les écritures à rajouter ??

J'ai testé en l'état ta routine, ce qui donne =>

 

Dommage que la BD "Tables & Champs" ne puisse pas s'adapter au contenu =>

 

Je fais bien les manips, pourtant, aucun texte n'est créé !!

Ecrire_Etiquettes

Commande: Ecrire_Etiquettes

Pointez sur l'objet Modèle : Données d'objets présentes sur l'objet modèle !

---COPYRIGHT 21/06/2013 Par Fabrice DEMIEL---nil

Commande:

Commande:

Commande: *Annuler*

Commande:

Commande: *Annuler*

Commande:

ECRIRE_ETIQUETTES

Pointez sur l'objet Modèle : Données d'objets présentes sur l'objet modèle !

Selectionez les objets a traiter :

Sélectionner des objets: 1 trouvé(s)

Sélectionner des objets: 1 trouvé(s), 2 au total

Sélectionner des objets: 1 trouvé(s), 3 au total

Sélectionner des objets: 1 trouvé(s), 4 au total

Sélectionner des objets:

Table : SONDAGE et Champ : Type_de_sondageTR

Table : SONDAGE et Champ : Type_de_sondageTR

Table : SONDAGE et Champ : Type_de_sondageTR

Table : SONDAGE et Champ : Type_de_sondageTR

---COPYRIGHT 21/06/2013 Par Fabrice DEMIEL---nil

Commande:

Aurais je raté une étape ?

 

Merci d'avance,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Re,

 

J'ai testé sur un nouveau fichier,

 

En effet, ça fonctionne bien et vite !!smile.gif

 

Juste une remarque, ne peut on pas choisir texte au lieu de Mtext et pouvoir spécifier la hauteur de celui ci au passage?

 

J'ai repris le premier fichier test et je n'arrive toujours à aucun résultat !!sad.gif

 

Une idée ?

 

Le fichier =>

 

Merci d'avance,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Bonsoir,

 

Ravi que ma routine te correspond :-)

Juste une remarque, ne peut on pas choisir texte au lieu de Mtext...

 

- Je crée des Mtextes car la routine permet de sélectionner plusieurs valeurs dans la case de dialogue crée par Gilles Chanteau et donc d'écrire plusieurs lignes séparées par un retour chariot.

 

et pouvoir spécifier la hauteur de celui ci au passage ?

Je viens de me rendre compte que la taille du texte était variable en fonction de l'état de zoom lors de la sélection,

je ne sais pas comment c'est possible mais en tout cas, c'est terrible !!

 

- La valeur est calculée par un pourcentage par rapport à la hauteur de la zone graphique de l'espace objet.

 

En ce qui concerne l'ajout de ta valeur, j'ai des lacunes sur la fonction mapcar, il faudrait un crack du lisp, ce serait cool.

 

Fabcad

 

Le Rennais Métropolitain

Posté(e)

Re,

 

Salut Fabcad,

- Je crée des Mtextes car la routine permet de sélectionner plusieurs valeurs dans la case de dialogue crée par Gilles Chanteau et donc d'écrire plusieurs lignes séparées par un retour chariot.

 

Vu !

 

- La valeur est calculée par un pourcentage par rapport à la hauteur de la zone graphique de l'espace objet.

 

Merci pour la confirmation, c'est en regardant un peu ce soir que je m'en suis aperçut,.. en même temps c'était évident mais ne connaissant pas bien la puissance du lisp,...

En ce qui concerne l'ajout de ta valeur, j'ai des lacunes sur la fonction mapcar, il faudrait un crack du lisp, ce serait cool.

 

Oui parce que ce serait sans doute adaptable "facilement" à d'autres besoins de préfixe/suffixe.

Je viens de tester ta routine sur le fichier de ce post sans aucun soucis,cool.gif

 

Merci encore pour ton partage (Et vive la Bretagne,tongue.gif)

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Une version un peu similaire pour écrire une OD sur une entité curviligne (elle est encore embryonnaire).

 

(vl-load-com)
(defun str2lst (str sep / pos)
 (if (setq pos (vl-string-search sep str))
   (cons
     (substr str 1 pos)
     (str2lst (substr str (+ (strlen sep) pos 1)) sep)
   )
   (list str)
 )
)
(defun ListBox (title msg keylab flag / tmp file dcl_id choice)
 (setq
   tmp (vl-filename-mktemp "tmp.dcl")
   file (open tmp "w")
 )
 (write-line
   (strcat "ListBox:dialog{label=\"" title "\";")
   file
 )
 (if (and msg (/= msg ""))
   (write-line (strcat ":text{label=\"" msg "\";}") file)
 )
 (write-line
   (cond
     ((= 0 flag) "spacer;:popup_list{key=\"lst\";")
     ((= 1 flag) "spacer;:list_box{key=\"lst\";")
     (T "spacer;:list_box{key=\"lst\";multiple_select=true;")
   )
   file
 )
 (write-line "}spacer;ok_cancel;}" file)
 (close file)
 (setq dcl_id (load_dialog tmp))
 (if (not (new_dialog "ListBox" dcl_id))
   (exit)
 )
 (start_list "lst")
 (mapcar 'add_list (mapcar 'cdr keylab))
 (end_list)
 (action_tile
   "accept"
   "(or (= (get_tile \"lst\") \"\")
     (if (= 2 flag)
       (progn
         (foreach n (str2lst (get_tile \"lst\") \" \")
           (setq choice (cons (nth (atoi n) (mapcar 'car keylab)) choice))
         )
         (setq choice (reverse choice))
       )
       (setq choice (nth (atoi (get_tile \"lst\")) (mapcar 'car keylab)))
     )
   )
   (done_dialog)"
 )
 (start_dialog)
 (unload_dialog dcl_id)
 (vl-file-delete tmp)
 choice
)
(defun c:OD2Label_Side ( / js obj ename htx AcDoc Space nw_style lst_tabl_def inc_key lst_def desc_od desc_tbl str msg pt deriv rtx  nw_obj dxf_ent tmp)
 (princ "\nSélectionnez une polyligne.")
 (while
   (null
     (setq js
       (ssget "_+.:E:S"
         (list
           '(0 . "*POLYLINE,LINE,ARC,CIRCLE,ELLIPSE,SPLINE")
           (cons 67 (if (eq (getvar "CVPORT") 1) 1 0))
           (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model"))
         )
       )
     )
   )
   (princ "\nCe n'est pas un objet valable pour cette fonction!")
 )
 (setq
   obj (ssname js 0)
   ename (vlax-ename->vla-object obj)
 )
 (cond
   ((ade_odgettables obj)
     (initget 6)
     (setq htx (getdist (getvar "VIEWCTR") (strcat "\nSpécifiez la hauteur du texte <" (rtos (getvar "TEXTSIZE")) ">: ")))
     (if htx (setvar "TEXTSIZE" htx))
     (setq
       AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
       Space
       (if (= 1 (getvar "CVPORT"))
         (vla-get-PaperSpace AcDoc)
         (vla-get-ModelSpace AcDoc)
       )
     )
     (cond
       ((null (tblsearch "LAYER" "Label"))
         (vlax-put (vla-add (vla-get-layers AcDoc) "Label") 'color 96)
       )
     )
     (cond
       ((null (tblsearch "STYLE" "Romand-Label"))
         (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand-Label"))
         (mapcar
           '(lambda (pr val)
             (vlax-put nw_style pr val)
           )
           (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag)
           (list "romand.shx" 0.0 (/ (* 15.0 pi) 180) 1.0 0.0)
         )
       )
     )
     (setq lst_tabl_def (mapcar 'ade_odtabledefn (ade_odgettables obj)) inc_key 0)
     (foreach n lst_tabl_def
       (foreach el n
         (if (listp (cdr el))
           (foreach sel (cdr el)
             (foreach msel sel
               (if (eq (car msel) "ColName")
                 (setq lst_def (cons (cons (strcat "key" (itoa (setq inc_key (1+ inc_key)))) (cdr msel)) lst_def))
               )
             )
           )
         )
       )
     )
     (if (not desc_od)
       (setq desc_od (cdr (assoc (listbox "Donnée d'objet" "Choisir une données d'objet" lst_def 1) lst_def)) desc_tbl nil)
     )
     (foreach n lst_tabl_def
       (if (assoc (cons "ColName" desc_od) (cdaddr n))
         (setq desc_tbl (cdar n))
       )
     )
     (cond
       (desc_tbl
         (setq str (ade_odgetfield obj desc_tbl desc_od 0))
         (setq nw_obj
           (vla-addMtext Space
             (vlax-3d-point (setq pt (polar '(0.0 0.0 0.0) (* pi 0.5) (getvar "TEXTSIZE"))))
             (setq rtx 0.0)
             (cond
               ((eq (type str) 'INT) (itoa str))
               ((eq (type str) 'REAL) (rtos str 2 2))
               ((eq (type str) 'STR) str)
               (T "")
             )
           )
         )
         (mapcar
           '(lambda (pr val)
             (vlax-put nw_obj pr val)
           )
           (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation)
           (list 5 (getvar "TEXTSIZE") 5 pt "Romand-Label" "Label" rtx)
         )
         (setq dxf_ent (entget (entlast)))
         (while (or (= 5 (car (setq tmp (grread t 5 1)))) (/= (car tmp) 25) (= (car tmp) 3))
           (cond
             ((= 5 (car tmp))
               (setq
                 pt (vlax-curve-getClosestPointTo ename (trans (cadr tmp) 1 0))
                 deriv (vlax-curve-getFirstDeriv ename (vlax-curve-GetParamAtPoint ename pt))
                 rtx (- (atan (cadr deriv) (car deriv)) (angle '(0 0 0) (getvar "UCSXDIR")))
               )
               (if (or (> rtx (* pi 0.5)) (< rtx (- (* pi 0.5)))) (setq rtx (+ rtx pi)))
               (entmod
                 (subst
                   (cons 50 rtx)
                   (assoc 50 dxf_ent)
                   (subst (cons 10 (polar pt (+ rtx (* pi 0.5)) (getvar "TEXTSIZE"))) (assoc 10 dxf_ent) dxf_ent)
                 )
               )
               (entupd (cdar dxf_ent))
             )
             ((= 3 (car tmp))
               (setq nw_obj
                 (vla-addMtext Space
                   (vlax-3d-point (setq pt (polar '(0.0 0.0 0.0) (* pi 0.5) (getvar "TEXTSIZE"))))
                   (setq rtx 0.0)
                   (cond
                     ((eq (type str) 'INT) (itoa str))
                     ((eq (type str) 'REAL) (rtos str 2 2))
                     ((eq (type str) 'STR) str)
                     (T "")
                   )
                 )
               )
               (mapcar
                 '(lambda (pr val)
                   (vlax-put nw_obj pr val)
                 )
                 (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation)
                 (list 5 (getvar "TEXTSIZE") 5 pt "Romand-Label" "Label" rtx)
               )
               (setq dxf_ent (entget (entlast)))
             )
             (T (princ "\nArrêt anormal de la commande "))
           )
         )
       )
     )
     (entdel (entlast))
   )
   (T (princ "\nPas de données d'objet attachées"))
 )
 (prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonsoir à toutes et tous,

 

Salut Bruno,

 

(elle est encore embryonnaire).

 

ça promet,...cool.gif

 

Pas mal cette prise de main sur la position du/des texte(s),...

 

J'ai rien raté, hein, on ne peut traiter qu'une entité à la fois ? Pourtant la question est "sélection des objets", tu as surement prévu une sélection par capture par la suite, je suppose,...

 

A ce propos, j'ai trouvé une anomalie ce soir dans le fonctionnement de AutoCAD, est bien que vérifiant les variables "usuelles", j'ai toujours ce problème : Lorsque je lance la sélection similaire, j'ai à nouveau besoin de sélectionner des entités (ce qui n'as donc absolument aucun intérêt !!) et la commande "p" ne fonctionne pas pour le rappel du filtrage précédent,..

 

Peut être le même pb lors de la sélection des objets de ta routine Bruno ?

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

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é