Bonjour,
J'ai réalisé un champ imbriqué, mais un problème m'enquiquine.
Pour illustrer mon propos, je vous propose de tracer une ligne et d'appliquer le code d'essai suivant pour créer le champ. Il prend la longueur de l'objet et rajoute 2 valeurs en diesel. (10+5+longueur)
((lambda ( / )
(vl-load-com)
(princ "\nSélectionner une ligne.")
(while (null (setq js (ssget "_+.:E:S" '((0 . "LINE"))))))
(setq obj_vlax (vlax-ename->vla-object (ssname js 0)))
(setq
AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
Space
(if (= 1 (getvar "CVPORT"))
(vla-get-PaperSpace AcDoc)
(vla-get-ModelSpace AcDoc)
)
)
(initget 1)
(vla-addMtext
Space
(vlax-3d-point (trans (getpoint "\nPoint d'insertion du champ: ") 1 0))
0.0
(strcat
"%<\\AcDiesel $(+,10,5,"
"%<\\AcObjProp Object(%<\\_ObjId "
(itoa (vla-get-ObjectID obj_vlax))
">%).Length>%"
")>%"
)
)
))
Si le champ est bien créé, le problème vient que si je déplace un sommet, et que j'utilise METTREAJOURCHAMP (_updatefield), il me signale bien que 2 champ ont été trouvés et mis à jour.
Le problème c'est que la valeur n'est pas mis à jour (ni lors d'une sauvegarde et réouverture ultérieure)
Cependant si je double-clique sur le champ pour entrer dans l'éditeur de Texte-Multiligne et que je fais un click-droit (avec le curseur sur le champ, pas en dehors) pour obtenir le menu contextuel dans lequel je choisis "Mettre à jour le champ".
Grâce à cette manip. le champ dans ce cas se met à jour.
Comment faire pour mettre à jour ce champ simplement sans rentrer dans l'éditeur de texte.
La question n'est pas simple et risque de rester sans réponse, surtout que ça à l'air d'être un dysfonctionnement de la commande _updatefield....
Une piste?
Merci déjà de m'avoir lu.