通过筛选阻止搜索
你好我希望在这个问题上能得到一些帮助。任何帮助都将不胜感激。我正在编写一个lisp例程来按属性值计算块数。块将具有相同的属性标记,但值不同。我希望得到任何属性值组合中每种类型块的数量。我已经把下面的陈述安排好了,但我不确定是否写对了。我需要用逻辑运算符来调用它吗?或者这样可以吗?
BLOCK ATTDEFATTDEFATTDEF
NAME
(setq DOWM (ssget "x" ' ((2 . bname)(1 . DT)(1 . MT)(1 . ST))))
再说一次,帮助将是巨大的,
提前感谢,
秃鹰 选择集过滤器快速教程。。。
http://www.afralisp.net/lisp/filter.htm 非常感谢borgunit!
我相信我能在那里得到答案。很多信息。
我去看看。
秃鹰 秃鹰,
您可以过滤块名称,但不能过滤ATTDEF或ATTRIB标记或值。您必须单步通过选择集并测试这些。
可以添加序列过滤器以确保块具有属性。(66 . 1)
因此,要选择当前空间中具有block_name属性的所有插入:
大卫 据我所知,使用vlisp,您无法根据属性过滤选择,因为这些是块插入的“子属性”(我的术语)。
您可以筛选与代码类似的多个值,以下是文本示例:
(setq selset(ssget“x”'((0。“TEXT”)(1。“text1,text2”)))
**编辑**我知道我迟到了&缺钱了,我该回去工作了 哇,我好像在挖一个更深的洞。
这是非常复杂的。
继续前进。
看起来我会做很多阅读。
谢谢你们的帮助。
秃鹰 逐步遍历集合和各种“子实体”的示例
(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)
)
好代码Lee_Mac,
但不完全是我想要的。
我使用四个命名块。
数据、语音、语音/数据和光纤
每个块中有三个属性标记。
DT=下降型数据、语音、语音/数据光纤
MT=安装类型墙、CLNG、FLOR、FURN
ST=系统类型A、C P、W、WP、SL、WS-等。
我想通过任意组合来计算积木
属性已填充。
如果我能解决这个过滤问题,那太好了,但总有一天我会解决的。
当我长大后,我想像李一样,然后我的问题就会结束。
谢谢
秃鹰
对不起,Buzzard,我只发布了一个示例代码,说明如何单步通过选择集并检索各种实体。-不是专门针对你的Lisp程序。我注意到,在你最初的帖子中,你提到你正在写一个LISP,并希望得到帮助,所以我不只是想为你写整个LISP,而是提供一些建议。
如果你想让我继续写(试着)LISP来满足你的需要,我会的。
哈哈,不错。 我不确定你是不是人,
我得到的印象是,你的脑海里有10个500 GHz的微处理器。
页:
[1]
2