@the_ameral wrote:
i have texts in 3 layers(layer1 layer2 layer3) and have block have 3 tags (tag1 tag 2 tag3) iwant every text within block border convert to its atrrribute( txt in layer1 to tag1.... txt in layer2 to tag2
Asked and answered so many times, what one more then.
(Defun c:T2A ( / tagAndLayersNames ss i lst e ll ur en tagN);; Text to Attribute
;; pBe Jun 2021 ;;;
;; Tag and layer names | change the values to suit your needs ;;
(setq tagAndLayersNames
'(( "TAG1" "LAYER1")( "TAG2" "LAYER2")( "TAG3" "LAYER3")))
(if (setq ss (ssget '((0 . "INSERT")(66 . 1))))
(repeat (setq i (sslength ss))
(setq lst nil
e (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
(vla-GetBoundingBox e 'll 'ur)
(setq pts (mapcar 'vlax-safearray->list (list ll ur)))
(if (setq TextObjects (ssget "_W" (Car pts)(cadr pts) '((0 . "TEXT"))))
(progn
(repeat (sslength TextObjects)
(setq en (ssname TextObjects 0) ent (entget en) )
(setq lst (cons (list
(strcase (cdr (assoc 8 ent)))
(cdr (assoc 1 ent)))
lst
)
)
(entdel en)
(ssdel en TextObjects)
)
(foreach itm (Vlax-invoke e 'GetAttributes)
(if (And
(setq f (assoc (vla-get-tagstring itm) tagAndLayersNames))
(setq tagN (assoc (cadr f) lst))
)
(vla-put-textstring itm (cadr tagN))))
)
)
)
)(princ)
)
HTH