Aller au contenu

Messages recommandés

Posté(e)

salut a tous les Aoutiens

j'ai un petit problème de syntaxe

pour insérer un champ en lisp

 

 (defun c:hhh ()
 (setq obj (car(entsel)))
 
(command "_mtext" (getpoint) (getpoint)
 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
	 (itoa (vla-get-ObjectID (vlax-ename->vla-object obj)))
	".Area \f "%lu2%pr2%ps[,m²]">%"
	 ))
 )

je suis la dessus depuis 2 jours

d’habitude j’essaie de me démerder tout seul

mais je galéré

merci

 

Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

Posté(e)

Salut,

 

Plusieurs choses :

- Il manque des caractères d'échappement (\) dans la seconde partie de ton expression de champ. Si tu utilisais l'éditeur Visual LISP, tu t'en serais aperçu...

- "AcObjProp.16.2" : je ne sais pas d'où vient le 16.2, mais chez moi c'est superflu.

- Si tu utilises une version 64 bits (ou si tu veux que ton code fonctionne aussi avec les versions 64 bits) la chaîne contenant l'ObjectId doit représenter un entier codé sur 64 bits (voir ici).

- Il manque une validation à la fin de l'expression (command ..).

- Tu peux éviter de demander à l'utilisateur de spécifier un second point en faisant un mtexte de largeur 0.0 (ou en faisant un texte simple).

 

(defun c:hhh (/ obj)
 (setq obj (car (entsel)))
 (command "_mtext"
   (getpoint)
   "_width"
   0.0
   (strcat
     "%	     (gc:GetObjectIdString (vlax-ename->vla-object obj))
     ">%).Area \\f \"%lu2%pr2%ps[,m²]\">%"
   )
   ""
 )
 (princ)
)

;; gc:GetObjectIdString
;; Retourne l'ObjectId de 'obj' sous forme de chaîne représentant un entier 32 ou 64 bits
;;
;; Argument
;; obj : l'objet dont on cherche l'ObjectId (vla-object)

(defun gc:GetObjectIdString (obj)
 (or *util*
     (setq *util* (vla-get-Utility (vla-get-ActiveDocument (vlax-get-acad-object))))
 )
 (if (vlax-method-applicable-p *util* 'GetObjectIdString)
   (vla-GetObjectIdString *util* obj :vlax-false)
   (itoa (vla-get-ObjectId obj))
 )
)

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

merci Gile

je suis en 64B

 

je me suis bien aperçu qu'il y avait un problème dans la fonction strcat

j'ai un editeur Visual LISP

le 16.2 viens de la commande CHAMP un copier coller du résultat, dans la boite de dialogue.

 

la fonction marche tres bien encore merci

Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

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é