We normally have blocks generated in a third party software containing data for survey pick-up attributes. We have a suite of LISPs I've inherited that allow us to pull multileaders with different configurations of the attributes. When we use these lisps with our 'vanilla' data the LISPs draw the multileaders into a layer named [block insertion layer]_txt e.g. GAS_txt. We're getting some data from a subcontractor that's using civil 3d and they are creating blocks "DIAG-CROSS" that have attributes based on their original 'object data', (I can't read object data in our AutoCAD 201. They made the block and it's attributes in layer "0".
I've altered our LISPs to change the attribute sets into what they're providing, it's different to our vanilla attributes, and everything works except the layer designation.
I can edit the block and change the layer for the attributes from "0" to "0022" and the multileaders appear locked on the layer of the attribute and write to "0022_txt" instead of e.g. "GAS_txt", which they were doing in vanilla. I found a LISP called "UPAL" and it changes the layer for the attributes, they change to the defined colour of the new layer, but when using the multileader LISP it still references whatever the attribute text layer is set to in the block editor "0022". I've changed the properties of individual blocks using the enhanced attribute editor tool to [ Layer: "GAS" ] and the multileader still writes to "0022_txt".
I can't see why:
Code:
(setq sel1 (ssget "x" '((0 . "INSERT")(2 . "DIAG-CROSS"))))
in the automated LISPS, or :
Code:
(setq 1Att (entnext Blname))
(setq 1AtEnt (entget 1Att))
(while (/= (cdr (assoc 0 1AtEnt)) "SEQEND")
(progn
(setq tag (cdr (assoc 2 1AtEnt)))
(set (read tag) (cdr (assoc 1 1AtEnt)))
(setq lay (cdr (assoc 8 1AtEnt)))
(setq 1Att (entnext 1Att))
(setq 1AtEnt (entget 1Att))
)
)
)
in the manual multileader lisps would do anything other than look up the dxf groups for the block inserted not the attributes of the block.
Is there some way to globally change inserted block attribute's layers to the same layer as the inserted block? or maybe there's some inherent difference with the new block that's interfering with the LISPs?