SteveK 发表于 2022-7-6 14:15:41

Q、 包含以下内容的选择集:

这是一个一般性的问题,我希望能够在很多LISP中使用。
 
线路:

(setq ss (ssget "_X" filtered_list)
根据模型空间或图纸空间中的filter_列表搜索所有对象。
 
你如何让它搜索包括一切;在所有街区?在所有的纸上?
 
有一个简单的答案吗。。。?
 
助教

The Buzzard 发表于 2022-7-6 14:19:50

 
嘿steve1,
 
请查看以下链接以获取大部分答案:
 
http://www.cadtutor.net/forum/showthread.php?t=31499
http://www.afralisp.net/lispa/lisp19.htm
http://www.afralisp.net/lisp/filter.htm
 
祝你好运
秃鹰

SteveK 发表于 2022-7-6 14:24:10

好的,谢谢。我会看一看,然后告诉你。

SteveK 发表于 2022-7-6 14:25:31

快速浏览了这些链接。。。听起来没有简单的方法。
 
基本上,如果我想在任何地方找到所有的绿线,我必须穿过每个实体。

Lee Mac 发表于 2022-7-6 14:30:16

 
如果您引用的是块中的实体,则需要遍历块定义。
 
下面是一个示例代码:
 

(defun c:test ()
(GetObj (tblobjname "BLOCK" <blockname>))
)

; Get Sub-Entities from Table Def
(defun GetObj(bObj)
(if (setq bObj (entnext bObj))
   (cons bObj (GetObj bObj))))


 
如果提供了有效的块表实体,则上述实体将遍历块定义,并返回组成块的所有实体的列表。

SteveK 发表于 2022-7-6 14:32:18

好的,我正在尝试实现这个tblobjname来洗牌代码,但我仍在尝试接受它。(这是如此简单的代码!!) 
这可能真的很愚蠢,但我只是想理解;如果我同时使用这两个选项拾取同一个块:
显然,它们都返回相同的实体名称。那么tblobjname如何深入到块的子实体中呢?
 
使用GetObj表单,您将遍历所有实体,直到它们用完(setq bObj(entnext(bObj))。
那么我可以把这样的东西放到while循环中,然后继续用修改填充while循环吗?为了保持简单,请将绿色更改为黄色:
这不起作用,但你明白了。。。

Lee Mac 发表于 2022-7-6 14:35:31

tblobjname获取指定表项的实体名称,与从(car(entsel))返回的实体略有不同,因为您可以单步遍历块组件(通过对象实体名称无法访问)。
 
我倾向于使用子函数来检索实体列表,因为列表更容易处理,也更容易出错。让事情变得简单。
 

SteveK 发表于 2022-7-6 14:40:24

关于tblobjname,(很抱歉,我还没有完全了解它)它是如何跨块组件的?
 
从帮助文件:
(tblobjname表名符号)
符号可以是什么样的东西?如果我有一个块,其中有一行,可以在符号位(表名=“block”)中指定吗?
谢谢

The Buzzard 发表于 2022-7-6 14:43:40

 
嘿,史蒂夫,
 
符号可以是任何类型的实体。下面显示的是块和多段线的列表。您可以看到的实体名称在这些列表中。例如,此处显示为dxf数据。
 


Here is a list for a block:

(-1 . <Entity name: 7ef6f508>)
(0 . "INSERT")
(330 . <Entity name: 7ef6dcf8>)
(5 . "4C1")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "T-COMM-TAPP")
(100 . "AcDbBlockReference")
(66 . 1)
(2 . "SPEC_2-WAY")
(10 0.972767 0.795854 0.0)
(41 . 1.0)
(42 . 1.0)
(43 . 1.0)
(50 . 0.785398)
(70 . 0)
(71 . 0)
(44 . 0.0)
(45 . 0.0)
(210 0.0 0.0 1.0)

Here is a lwpolyline:

(-1 . <Entity name: 7ef6f5d8>)
(0 . "LWPOLYLINE")
(330 . <Entity name: 7ef6dcf8>)
(5 . "543")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "0")
(100 . "AcDbPolyline")
(90 . 2)
(70 . 0)
(43 . 0.0)
(38 . 0.0)
(39 . 0.0)
(10 1.66837 -0.629099)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 3.45399 -0.0267465)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(210 0.0 0.0 1.0)

The Buzzard 发表于 2022-7-6 14:44:33

以街区为例。
 
 
(tblobjname表名符号)
 
 
命令:(tblobjname“block”“SPEC\u 2-WAY”)
 
将返回
页: [1] 2
查看完整版本: Q、 包含以下内容的选择集: