The Buzzard 发表于 2022-7-6 15:11:26

通过筛选阻止搜索

你好
 
我希望在这个问题上能得到一些帮助。任何帮助都将不胜感激。我正在编写一个lisp例程来按属性值计算块数。块将具有相同的属性标记,但值不同。我希望得到任何属性值组合中每种类型块的数量。我已经把下面的陈述安排好了,但我不确定是否写对了。我需要用逻辑运算符来调用它吗?或者这样可以吗?
 

                           BLOCK    ATTDEFATTDEFATTDEF
                           NAME
(setq DOWM (ssget "x" ' ((2 . bname)(1 . DT)(1 . MT)(1 . ST))))
 
再说一次,帮助将是巨大的,
提前感谢,
秃鹰

borgunit 发表于 2022-7-6 15:15:57

选择集过滤器快速教程。。。
 
http://www.afralisp.net/lisp/filter.htm

The Buzzard 发表于 2022-7-6 15:19:48

非常感谢borgunit!
 
我相信我能在那里得到答案。很多信息。
我去看看。
 
秃鹰

David Bethel 发表于 2022-7-6 15:21:09

秃鹰,
 
您可以过滤块名称,但不能过滤ATTDEF或ATTRIB标记或值。您必须单步通过选择集并测试这些。
 
可以添加序列过滤器以确保块具有属性。(66 . 1)
 
因此,要选择当前空间中具有block_name属性的所有插入:
大卫

CarlB 发表于 2022-7-6 15:25:17

据我所知,使用vlisp,您无法根据属性过滤选择,因为这些是块插入的“子属性”(我的术语)。
 
您可以筛选与代码类似的多个值,以下是文本示例:
 
(setq selset(ssget“x”'((0。“TEXT”)(1。“text1,text2”)))
 
**编辑**我知道我迟到了&缺钱了,我该回去工作了

The Buzzard 发表于 2022-7-6 15:27:56

哇,我好像在挖一个更深的洞。
这是非常复杂的。
继续前进。
 
看起来我会做很多阅读。
 
谢谢你们的帮助。
秃鹰

Lee Mac 发表于 2022-7-6 15:33:06

逐步遍历集合和各种“子实体”的示例

(defun c:attribext    (/ ss i bEnt aEnt aEntlist attlist)
   (vl-load-com)
   (if    (setq ss (ssget    "X"
         (list (cons 0 "INSERT")
               (cons 66 1)
               (if (getvar "CTAB")
               (cons 410 (getvar "CTAB"))
               (cons 67 (- 1 (getvar "TILEMODE")))
               )
         )
      )
   )
   (progn
       (setq i (sslength ss))
       (while (not (minusp (setq i (1- i))))
       (setq bEnt (ssname ss i)
             aEnt (entnext bEnt)
       )
       (while (/= "SEQEND" (cdr (assoc 0 (entget aEnt))))
         (setq aEntlist (entget aEnt)
             attlist(cons (cons (cdr (assoc 2 aEntlist)) (cdr (assoc 1 aEntlist))) attlist)
         )
         (setq aEnt (entnext aEnt))
       )
       )
   )
   (princ "\n<!> No Attributed Blocks Found <!>")
   )
   (alert (vl-princ-to-string attlist))
   (princ)
)

The Buzzard 发表于 2022-7-6 15:35:55

好代码Lee_Mac,
 
但不完全是我想要的。
我使用四个命名块。
数据、语音、语音/数据和光纤
 
每个块中有三个属性标记。
DT=下降型数据、语音、语音/数据光纤
MT=安装类型墙、CLNG、FLOR、FURN
ST=系统类型A、C P、W、WP、SL、WS-等。
 
我想通过任意组合来计算积木
属性已填充。
 
如果我能解决这个过滤问题,那太好了,但总有一天我会解决的。
 
当我长大后,我想像李一样,然后我的问题就会结束。
 
谢谢
秃鹰

Lee Mac 发表于 2022-7-6 15:39:12

 
对不起,Buzzard,我只发布了一个示例代码,说明如何单步通过选择集并检索各种实体。-不是专门针对你的Lisp程序。我注意到,在你最初的帖子中,你提到你正在写一个LISP,并希望得到帮助,所以我不只是想为你写整个LISP,而是提供一些建议。
 
如果你想让我继续写(试着)LISP来满足你的需要,我会的。
 
 
 
哈哈,不错。

The Buzzard 发表于 2022-7-6 15:40:36

我不确定你是不是人,
 
我得到的印象是,你的脑海里有10个500 GHz的微处理器。
页: [1] 2
查看完整版本: 通过筛选阻止搜索