划掉“elevation”,即dxf代码40,但“name”仍然是个谜(在本例中,名称为“14W”)
看起来14W是一个“AECB\u DEVICE\u STYLE”的名字。我没有其他不同风格的设备来测试过滤器。。。让我知道这是否有效
(if (setq dic (cdr (cadr (member '(3 . "AECB_DEVICE_STYLES") (entget (namedobjdict))))))
(if (setq dic (cdr (cadr (member '(3 . "14W") (entget dic)))))
(if (setq ss (ssget "_x" (list (cons 0 "AECB_DEVICE"))))
(vl-remove-if-not
'(lambda (x) (vl-position (cons 341 dic) (entget x)))
(mapcar 'cadr (ssnamex ss))
)
)
)
) 我认为它不起作用,至少我无法理解,但我非常想对你的代码进行解释,因为我不能完全理解它。
如果你想试试的话,我已经附加了另一个不同风格名称的设备。
图纸3.dwg
我更新了上面的代码。。。现在试试看。它应该返回这些块的列表(而不是ss)。
你有什么问题?
这似乎奏效了。干得好!谢谢!
但我不太清楚它是如何工作的,介意一步一步地、一行一行地浏览代码吗?
例如,我将如何通过sslength计算过滤的对象数?
要获取列表中的项目总数,请使用(length ss)而不是sslength。
我通过在AutoCAD的Vlide编辑器中搜索dxf数据找到了“14W”。这就是我建议在必要时深入研究这些物体的方式。任何包含ename的代码,您都可以对其执行entget并查看更多嵌套数据。
这里有一个小例子:
你好
听起来像是欠某人一杯啤酒。
祝你过得愉快。
肖恩多
...男孩,我渴了吗
http://stuffeducatedlatinoslike.files.wordpress.com/2008/03/beer.jpg
这个看起来怎么样? 美味的
页:
1
[2]