Aller au contenu

attribut correspondant au nom du calque


Messages recommandés

Posté(e)

Bonjour,

j'ai fouillé sur le net et sans succès du coup je me tourne vers vous ^^

voila mon soucis, j'utilise un bloc un petit paquet de fois, le soucis sur le plan que j'ai est que l'étiquette "nom" de mon bloc est vide par contre le calque sur lequel il apparait porte son nom, du coup je voudrais que mon étiquette "nom" soit remplie par le nom du calque dans lequel elle est. j'ai essayé d'utiliser la variable systeme 'clayer' mais comme son nom l'indique, elle renvoie au calque courant et non au calque dans lequel apparait l'élément(je précise que je ne peux pas passer mon calque en courant, étant donné que j'ai ce cas de figure 2650 fois ^^).

 

Si quelqu'un a une solution, je suis preneur!!

en vous remerciant d'avance et en esperant que mon message soit clair ;)

Calmar

Posté(e)

Bonjour,

 

(vl-load-com)

(defun modif_attrib (E ETIQ VALEUR / LATT ATT)
 (if (= (type E) 'ENAME)
   (setq E (vlax-ename->vla-object E))
 )
 (setq LATT (vlax-invoke E 'getAttributes))
 (foreach ATT LATT
   (if (= (strcase (vla-get-TagString ATT)) (strcase ETIQ))
     (vla-put-TextString ATT VALEUR)
   )
 )
)


(defun c:lay2att ()

 (setq js (ssget "_X" '((0 . "INSERT") (2 . "MettreIciLeNomDuBloc"))))

 (setq I 0)
 (repeat (sslength js)
   (setq e (ssname js I))
   (setq I (+ I 1))
   (setq LAY (cdr (assoc 8 (entget e))))
   (modif_attrib e "MettreIciLeNomDAttribut" LAY)
 )       
 (princ)

)

 

Amicalement

Vincent

 

PS : quand il n'y a qu'un seul souci, il n'y a pas besoin de mettre de s. Jusqu'à dernièrement je mettais un s également, compte tenu de la proximité avec le mot "souris".

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Salut

 

Je suis parti de l'idée de base de Zebulon_, mais en cliquant à l'écran sur l'attribut qui t'intéresse et en utilisant les champs.

(defun c:caq(/ doc ent nom ori pos sel nombl)

 (defun nombl(bl)
   (if (vlax-property-available-p bl 'effectivename)
     (vla-get-effectivename bl)
     (vla-get-name bl)
   )
 )

 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (and	(setq ent (nentsel "\nVeuillez sélectionner un attribut : "))
(eq (vla-get-objectname (setq ent (vlax-ename->vla-object (car ent)))) "AcDbAttribute")
(setq pos (vl-position ent (vlax-invoke (setq ori (vla-objectidtoobject (vla-get-database ent) (vla-get-ownerid ent))) 'getattributes)))
(ssget "x" (list (cons 0 "insert") (cons 66 1) (cons 2 (strcat "`**," (setq nom (nombl ori))))))
   (progn
     (vlax-for ent (setq sel (vla-get-activeselectionset doc))
(and (eq (nombl ent) nom)
  (vla-put-textstring (nth pos (vlax-invoke ent 'getattributes)) (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid ent)) " >%).Layer>%"))
)
     )
     (vla-delete sel)
     (vla-regen doc acallviewports)
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é