(setq enx (entget (tblobjname "layer" lay))
通过修改此部分:
(while (setq lay (tblnext "layer" (not lay)))
(setq lay (cdr (assoc 2 lay)))
收件人:
11
我还认为这应该是最快的方法——直接迭代layers表。
我想我理解你为这个特殊的请求使用了这个(boole)函数。。但是,由于我在处理位/位代码方面总体上很差劲,你能推荐从哪里开始学习如何处理它们吗?
你试过了吗?
tblnext返回的列表不是tblobjname返回的AcDbLayerTableRecord的完整DXF数据,因此不能用于修改图层特性。
刚刚试过,它:
12
但是,如果您(使用布尔)替换层而不是ENX(因为GC 70出现在两者中),并且在“层”符号上使用(entupd)(因为它引用层定义),会有区别吗?
对不起,我在问你,但我似乎不明白两者之间的区别。 在某些情况下,可以使用部分实体列表作为(entmod)的参数。但实体列表还应至少包含对实体名称的-1组码引用。由于(entnext)中的列表缺少这一点,因此不能与(entmod)一起使用。注意,(entupdt)和(entmod)是非常不同的函数。
谢谢,罗伊,我现在明白了。。为什么(tblnext)不能从AcDbLayerTableRecord返回完整的DXF数据,这看起来仍然很奇怪。
这种DXF/Elist操作似乎比处理定制列表更难。
下面是Stig Madsen关于位码的一篇很棒的文章:
http://www.afralisp.net/archive/lisp/binary_I.htm
史蒂夫
谢谢您!
我不知道AfraLisp有档案。。。很酷的东西!
明天我要开始玩极客。 谢谢大家的回复!对不起,我出去度假了,所以我没有机会复习这些。我将开始测试这些,并看到速度上的差异。我需要更多地研究lambda函数,因为不幸的是我一直在搞砸它。 我的模板中有一组层状态。我使用功能区中的下拉菜单来控制层的显示方式。
我将此添加到我的acaddoc中。lsp:
13
以确保它不会关闭图层状态中未找到的图层。
页:
1
[2]