您应该在执行块定义之前存储层,然后可以应用变量中的层,而不是每次“获取”对象的层。
触摸。。。我甚至没想到。我猜这就是我回答一个不适合我的问题所得到的。
为了弥补我的错误,也许是这样的:
(if
(and
(eq :vlax-false (vla-get-islayout block))
(eq :vlax-false (vla-get-isxref block))
)
(progn
(vlax-for objectblock
(mapcar
(function
(lambda (property value / lay)
(vl-catch-all-apply
'vlax-put-property
(list object property value))
)
)
'(layer color linetype)
(list (cond (lay)
((setq lay (vla-get-layer object))))
acbylayer
"BYLAYER")
)
)
(setq lay nil)
)
)
(^^摘自李的代码)
现在我忘记了是否仍然需要将“lay”本地化到lambda意味着(setq lay nil)?对我来说,这是一个艰难的星期一。这肯定不是我最好的技术表现。英雄联盟
不客气
对于每个块参照,插入块的图层可能不同,因此无法通过修改块定义来实现此行为,因为此类修改将反映在所有插入中。
但在任何情况下,如果所有块对象都在层“0”上,它们将假定块插入的层,或者我遗漏了什么?
即将块定义中的所有对象设置为块定义中第一个对象的图层。
我认为你们中的一些人在定义和引用之间感到困惑,无法从块定义中确定插入一个或多个引用的层。 是的,那是我的错。我脑子很乱,不应该发帖子。抱歉让你们分心。 一般来说,将特定块指定给特定层。但是,我不同意或不理解块定义中的对象位于“0”层以外的任何位置。
你说得对,我认为引用和定义之间的区别还没有完全掌握。
页:
1
[2]