bonuscad Posté(e) le 5 octobre 2015 Posté(e) le 5 octobre 2015 Bonjour, J'ai découvert aujourd'hui l'expression (w2u) dans les formules de champs (fields)Si manuellement j'arrive parfaitement à la mettre en œuvre, donc ça fonctionne! L'automatiser en lisp me fais buter sur un phénomène bizarre. Voici par exemple une ébauche en cours (defun c:field_ptUCS ( / AcDoc Space pt obj nw_obj) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vla-AddPoint Space (vlax-3d-point (setq pt (trans (getpoint "\nPoint?: ") 1 0)))) (setq obj (entlast)) (setq nw_obj (vla-addMtext Space (vlax-3d-point pt) 0.0 (strcat "%<\\AcExpr (w2u(" "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%).Coordinates >%))" ) ) ) ) A l’exécution toutes les expressions sont évaluées (on voit les champs calculés) sauf "AcExpr" (d'ailleurs il est systématiquement "bouffé", il ne reste que "cExpr" ?!?! Je ne vois pas mon erreur (si erreur existe, car c'est peut être un bug)Vos avis seraient les bienvenus. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
bonuscad Posté(e) le 18 novembre 2015 Auteur Posté(e) le 18 novembre 2015 C'est bien une erreur de syntaxe de ma part; il manquait un ">%" à la fin. La correction, pour ceux que ça pourrait interesser... (defun c:field_ptUCS ( / AcDoc Space pt obj nw_obj) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vla-AddPoint Space (vlax-3d-point (setq pt (trans (getpoint "\nPoint?: ") 1 0)))) (setq obj (entlast)) (setq nw_obj (vla-addMtext Space (vlax-3d-point pt) 0.0 (strcat "%<\\AcExpr (w2u(" "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%).Coordinates >%))>%" ) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lecrabe Posté(e) le 18 novembre 2015 Posté(e) le 18 novembre 2015 Hello Bruno SVP c quoi la partie "AcObjProp.16.2" dans ton code ? Cela a t-il un rapport avec :HKEY_CURRENT_USER / Software / Autodesk / AutoCAD / R1x.xCle : R17.0 pour 2007Cle : R17.1 pour 2008Cle : R17.2 pour 2009Cle : R18.0 pour 2010Cle : R18.1 pour 2011Cle : R18.2 pour 2012Cle : R19.0 pour 2013Cle : R19.1 pour 2014Cle : R20.0 pour 2015Cle : R20.1 pour 2016 Sous entendu, ton code est-il lie a une version precise d'ACAD / MAP / CIVIL / etc ?? Merci d'avance de tes lumieres, Bye, lecrabe Autodesk Expert Elite Team
bonuscad Posté(e) le 18 novembre 2015 Auteur Posté(e) le 18 novembre 2015 C'est un bête copier-collé de code à code qui est resté depuis que je me suis penché sur la syntaxe des champs.A l'époque je l'avais obtenue comme dit ICI Un AcObjProp Object fonctionne tout aussi bien. Il faut croire que les deux syntaxes fonctionnent (certainement pour la compatibilité des anciennes syntaxes) Te l'expliquer j'en serais bien incapable, c'est la soupe interne d'Autodesk... je laisse la main. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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