Insertion champ dans un bloc

Fermé
JP - Modifié par Whismeril le 7/07/2015 à 07:13
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020 - 5 mars 2016 à 11:02
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 jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
5 mars 2016 à 11:02
Salut,
Tu as trouvé ta solution ?
Ou tu veux un coup de main ?
0