请问同样是计算块,为何一种可以统计,一种不行?
为什么采用 BTJ这个lsp就可以读出,附件图纸中的插座数量。
而采用统计块lsp则无法统计数量,只能读取名字?
统计块采用的是这种方式读取
setq ss (ssget "X"(list (cons 0"INSERT,TCH_BLOCK_INSERT,*BLOCK") '(-4 . "<or")(cons 2 name)'(-4 . "or>"))))
BTJ采用的是
(if (= ss nil) (setq ss (ssget "x")))
(setq n 0 m 0)
(while (and ss (< n (sslength ss)))
(setq ssn (ssname ss n))
(if (= (cdr (assoc '0 (entget ssn))) "INSERT")
(progn
(setq blockname1 (cdr (assoc '2 (entget ssn))))
(if (= blockname blockname1)
(setq m (+ m 1))
)
)
)
(setq n (+ n 1))
)
这种方式来统计,目测感觉两种方式是一样的呀。但是一个可以统计,另一个就不行。
求解答。
BTJ的命令就是BTJ,后面那个统计块的命令是 KK,忘记添加在命令里面了。我后来想,是不是我对于SSGET这个函数没有理解,所有选择集里面筛选就没有筛选到插座这个块。但是对于这个-4.<这个判断条件,没有看到比较详细的解释。 额 我刚才又尝试了一下,发现如果好像是块名的问题?块的名称是*U13,*U14这样的。是否就是因为前面带一个*导致判断的问题?但是另一种选择集的手动筛选不存在这样的问题呀? 蛋疼,好像真的是*的原因,根据ssget运算参数*表示全部都为真,到了函数里面就不是判断同名称了,而是一个运算条件了。额,怎么避免这个问题? 好吧,实在没法,找了个自动修改匿名块为普通块Lsp.
页:
[1]