dhl 发表于 2022-7-6 12:53:08

 
划掉“elevation”,即dxf代码40,但“name”仍然是个谜(在本例中,名称为“14W”)

ronjonp 发表于 2022-7-6 12:54:25

 
看起来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))
   )
   )
)
)

dhl 发表于 2022-7-6 12:58:30

我认为它不起作用,至少我无法理解,但我非常想对你的代码进行解释,因为我不能完全理解它。
 
如果你想试试的话,我已经附加了另一个不同风格名称的设备。
图纸3.dwg

ronjonp 发表于 2022-7-6 13:02:13

 
我更新了上面的代码。。。现在试试看。它应该返回这些块的列表(而不是ss)。
 
你有什么问题?

dhl 发表于 2022-7-6 13:04:43

 
这似乎奏效了。干得好!谢谢!
 
但我不太清楚它是如何工作的,介意一步一步地、一行一行地浏览代码吗?
 
例如,我将如何通过sslength计算过滤的对象数?

ronjonp 发表于 2022-7-6 13:07:46

 
要获取列表中的项目总数,请使用(length ss)而不是sslength。
 
我通过在AutoCAD的Vlide编辑器中搜索dxf数据找到了“14W”。这就是我建议在必要时深入研究这些物体的方式。任何包含ename的代码,您都可以对其执行entget并查看更多嵌套数据。
 
这里有一个小例子:

Shawndoe 发表于 2022-7-6 13:12:23

你好
 
听起来像是欠某人一杯啤酒。
 
祝你过得愉快。
肖恩多

ronjonp 发表于 2022-7-6 13:14:33

 
...男孩,我渴了吗

dhl 发表于 2022-7-6 13:18:03

 
http://stuffeducatedlatinoslike.files.wordpress.com/2008/03/beer.jpg
 
这个看起来怎么样?

ronjonp 发表于 2022-7-6 13:19:23

美味的
页: 1 [2]
查看完整版本: Qselect公司