Insertion champ dans un bloc

JP -  
Matt 666 Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour

je suis pas un As de programation LISP, jusqu'à présent je me débrouille à partir d'exemple. Mais la je voudrais faire quelque chose de compliquer qui est de récupéré des valeurs d'attribut dans un bloc (A B) et de donner dans un autre bloc le résultat de (A+B)

Pour cela j'ai créé un block que j'ai nommé Opération avec comme attribut A et B.
Puis un block Resultat avec comme attribut R

Vous trouverez ci dessous l'exemple que j'ai trouvé et que j'ai essayer d'adapter à mon cas. il y a un premier bug qui la suivant

erreur: type d'argument incorrect: (or stringp symbolp): 1

le deuxième problème et que mon bloc résultat n'apparait pas.

Merci d'avance pour votre aide

JP




(defun c:ccl (/ AcDoc Space bloc ent obj ins op reg ech id R ref)
(vl-load-com)
(setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
Space (if (= (getvar "CVPORT") 1)
(vla-get-PaperSpace AcDoc)
(vla-get-ModelSpace AcDoc)
)
)

(if (or
(tblsearch "BLOCK" (setq bloc "Resulat"))
(findfile (setq bloc "calcul.dwg"))
)
(progn

;; attribut "nom de la pièce"


(while (not (setq ent (car (entsel)))))
(setq obj (vlax-ename->vla-object ent))
(if (= "AcDbBlockReference" (vla-get-ObjectName obj))
(progn
(if (not
(setq
ins
(getpoint
"\nSpécifiez le point d'insertion ou < Centre >: "
)
)
)
(progn
(if (= (vla-get-closed obj) :vlax-false)
(progn
(vla-put-closed obj :vlax-true)
(setq op T)
)
)
(setq reg (vlax-invoke space 'addRegion (list obj))
ins (vlax-get (car reg) 'Centroid)
)
(if op
(vla-put-closed obj :vlax-false)
)
(vla-delete (car reg))
)
)
(if (not (vlax-ldata-get "resulat" 1))
(vlax-ldata-put "resulat" "ech" 1)
)
(if
(setq ech (vlax-ldata-get "resulat" "ech"))
(vlax-ldata-put "resulat" "ech" 1)
)
(setq id (vla-get-ObjectID obj)

;; Attribut somme A+B %<\AcExpr (%<\_FldPtr 671978640%<\AcExpr (%<\_FldPtr 671978768>%) \f "%lu2">%
R (strcat "%<\\AcExpr (%<\\_FldPtr "
(itoa id)
"%<\\AcExpr (%<\\_FldPtr"
(itoa id)
">%) \\f \"%lu2\">%"

)

)

(setq ref
(vla-InsertBlock
Space
(vlax-3d-point (trans ins 1 0))
bloc
1
1
1
(angle '(0 0 0) (trans (getvar 'ucsxdir) 0 (trans '(0 0 1) 1 0 T)))
)
)

;; attribution de leur valeur aux attributs
(mapcar '(lambda (x y) (vla-put-TextString x y))
(vlax-invoke ref 'GetAttributes)
(list R)
)

(vla-regen AcDoc acActiveViewport)
)

)
)

)
(princ)
)


EDIT: Ajout de la coloration syntaxique.
A voir également:

1 réponse

Matt 666 Messages postés 38 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,
Tu as trouvé ta solution ?
Ou tu veux un coup de main ?
0