明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 796|回复: 4

[已解答] 请问同样是计算块,为何一种可以统计,一种不行?

[复制链接]
发表于 2015-1-26 22:54 | 显示全部楼层 |阅读模式



为什么采用 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))
)

这种方式来统计,目测感觉两种方式是一样的呀。但是一个可以统计,另一个就不行。
求解答。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2015-1-27 08:41 | 显示全部楼层
BTJ的命令就是BTJ,后面那个统计块的命令是 KK,忘记添加在命令里面了。我后来想,是不是我对于SSGET这个函数没有理解,所有选择集里面筛选就没有筛选到插座这个块。但是对于这个-4.<这个判断条件,没有看到比较详细的解释。
 楼主| 发表于 2015-1-27 08:51 | 显示全部楼层
额   我刚才又尝试了一下,发现如果好像是块名的问题?块的名称是*U13,*U14这样的。是否就是因为前面带一个*导致判断的问题?但是另一种选择集的手动筛选不存在这样的问题呀?
 楼主| 发表于 2015-1-27 09:21 | 显示全部楼层
蛋疼,好像真的是*的原因,根据ssget运算参数*表示全部都为真,到了函数里面就不是判断同名称了,而是一个运算条件了。额,怎么避免这个问题?
 楼主| 发表于 2015-1-27 10:28 | 显示全部楼层
好吧,实在没法,找了个自动修改匿名块为普通块Lsp.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 16:50 , Processed in 0.223756 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表