编辑的块标志
我有一个在块中绘制一些基本几何图形的例程,有时需要“手动”进行一些基本编辑。是否有方法检查/标记块是否已编辑?我真的在努力避免使用反应堆。
我只需要一个可能的变化指标,作为检查提示。
我能想到的唯一方法是对照应该是什么来检查块内的几何体,但这在一个可能有数百个块的图形上需要一段时间。
如果这是唯一的方法,那么就这样吧,但我对想法持开放态度。。。。。。
使用Tapatalk从my Pixel XL发送 也许数一数区块内的ENT数? ENT的数量很少只会改变线条的长度。这些块通常包含一个有时需要拉伸的“L形截面”轮廓,另一些则包含一个三角形。
使用Tapatalk从my Pixel XL发送 如果只有区块内的实体本身发生变化,这确实将是一个挑战:-(
在这种情况下,你必须将它与其他东西进行比较,对于许多盖帽来说,我想挑战只会更大。。。如果外界要改变,你可以简单地检查一下天平之类的东西。但话说回来,论坛上有很多聪明人(我希望如此)。
gr.Rlx
p、 那么我们在这里讨论的是动态块?否则,将更新特定名称的所有块? 这些不是动态块,它们是非常基本的,通常大约10个元素。我认为测试区块内的总线路长度可能是一种选择。
使用Tapatalk从my Pixel XL发送 您可以将实体列表与equal函数进行比较。如果您过滤掉了ename,您应该能够将给定块定义中的所有实体与标准块定义(可能包含在ODBX数据库中)进行比较。 好主意,罗伊!
用代码示例对此进行详细说明:
(defun foo ( BlockName / e Lst )
(if (setq e (tblobjname "BLOCK" BlockName))
(while (and (setq e (entnext e)) (/= "ENDBLK" (cdr (assoc 0 (entget e)))))
(setq Lst (cons (vl-remove-if '(lambda (x) (eq 'ENAME (type (cdr x)))) (entget e)) Lst))
)
)
Lst
); defun foo
然后,存储原始块中的全局变量,以便稍后进行比较(或只是将该列表复制/批处理到代码中):
(setq *OriginalBlockData* (foo "MyBlock"))
然后检查是否已修改:
(equal *OriginalBlockData* (foo "MyBlock") 1e-6)
注意:Altho(cdr(entget e))将删除潜在的-1组代码,elist中也可能有所有者的名称。 这对我来说是一个新概念,我会试试看,谢谢你们的帮助
使用Tapatalk从my Pixel XL发送 ... 您还必须过滤掉句柄。
哦,对了!
页:
[1]
2