找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2849|回复: 11

[原创]:轻轻松松统计块!

[复制链接]

已领礼包: 8121个

财富等级: 富甲天下

发表于 2007-2-8 17:34:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
针对目前有很多人还在用R14,而且没有装express tools工具,对过滤器的用法又不熟悉,编写了一个lisp程序,
能用来统计块的数量。
(本想发到 lisp开发版块的,但觉得这里更合适,因而贴到此处了)
用法:加载程序,运行BC ,先选择要统计的块,然后选择要统计的区域,结束后按F2显示出统计数量。
[php]
(prompt "\n命令为: BC ,用法如下: ")
(prompt "\n先选择要统计的块,然后选择要统计的区域,结束后按F2显示出统计数量.")
;;;*****************************
;;;highflybird  2007-2-8 kunming
;;;主程序-----------------------
;;;*****************************
(defun C:BC (/ ss1 ss2 NamLst BList str1 str2)
  (graphscr)
  (prompt "\n请选择要统计的块:")
  (if (setq ss1 (ssget '((0 . "INSERT"))))
    (progn
      (prompt "\n请选择要统计的区域:")
      (if (setq ss2 (ssget '((0 . "INSERT"))))
        (progn
          (setq NamLst (Name-list ss1))
          (setq BList (Name-count ss2 NamLst))
          (princ "\n块名")
          (princ (setq str1 "..............................."))
          (princ "数量")
          (princ "\n--------------------------------------")
          (foreach n BList
            (princ "\n")
            (princ (setq str2 (car n)))
            (princ (substr str1 (1+ (strlen str2)) (strlen str1)))
            (princ "....")
            (princ (cdr n))
          )
        )
        (princ "\n所选区域没有要统计的块!")
      )
    )
    (princ "\n你没有选择要统计的块!")
  )
  (princ)
)
;;;图块名列表函数
(defun Name-list (ss1 / i l EName EList BName NList)
  (setq l (sslength ss1))            
  (setq i 0 NList nil)
  (while (< i l)
    (setq EName (ssname ss1 i))       ;取得图元名
    (setq EList (entget EName))       ;取得图元表
    (setq BName (cdr (assoc 2 EList)));取得图块名
    (if (not (member BName NList))    ;如果表中没有图块名
      (setq NList (cons BName NList)) ;添加到表中
    )
    (setq i (1+ i))                   ;计数器加1
  )
  NList
)
;;;计数函数
(defun Name-count (ss2 NamLst / blist i l ename elist bname oldcount newcount)
  (setq Blist (mapcar '(lambda (x) (cons x 0)) NamLst))       ;计数器归零
  (setq i 0 l (sslength ss2))
  (while (< i l)                                              ;对选择区域循环
    (setq ename (ssname ss2 i))                               ;取得图元名
    (setq elist (entget ename))                               ;取得图元表
    (setq bname (cdr (assoc 2 elist)))                        ;取得图块名
    (if (member bname NamLst)                                 ;如果是要统计的块
      (setq OldCount (assoc bname Blist)                      ;取得块数量
            NewCount (1+ (cdr OldCount))                      ;计数器加1
            Blist (subst (cons bname NewCount) OldCount Blist);替代原数量
      )      
    )
    (setq i (1+ i))
  )
  BList
)
[/php]

附件中包含了lisp程序和演示文件

本帖被以下淘专辑推荐:

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-2-8 23:32:11 | 显示全部楼层
下来后是0字节,
重传吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

 楼主| 发表于 2007-2-9 08:51:39 | 显示全部楼层
现在可以下载了,用IE或者傲游老上传不上去!---哎,这个该死的熬油。

如果不能下载,请到下面网址:
http://www.mjtd.com/BBS/dispbbs. ... ID=58012&page=1
重新上传一个lisp程序!
是因为针对很多人用天正,所以改了一下,能适合天正图块。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-2-9 21:11:39 | 显示全部楼层
用FILTER命令就可以,用不着这么麻烦吧!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

 楼主| 发表于 2007-2-10 13:38:10 | 显示全部楼层
最初由 liubingxia 发布
[B]用FILTER命令就可以,用不着这么麻烦吧! [/B]

用filter固然可以,但是麻烦,而且不能统计多个,而且过滤器对天正的某些实体不起作用(大家不妨试验一下)。
编这个程序的目的就是为了:
1。对于不知道过滤器用法的一些人也能够适用。
2。对天正的实体也能够适用。
3。有选择性的对所选区域进行统计。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-2-13 13:25:26 | 显示全部楼层
不错,用ACAD自己的"属性提取"功能也能够实现.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2013-8-2 17:59:36 | 显示全部楼层
改成输出到表格就更好了~~~~~~~~~~~~~~~~~~~~~~·
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-2 18:58:27 | 显示全部楼层
看不见附件哦
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-2 19:22:23 | 显示全部楼层
谢谢楼主代码分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2018-5-13 08:32:07 | 显示全部楼层
新手学习,感谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 418个

财富等级: 日进斗金

发表于 2018-9-24 18:07:08 | 显示全部楼层
学习了,学习提供啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 12个

财富等级: 恭喜发财

发表于 2018-11-12 20:39:25 | 显示全部楼层
这个历害,搞设计的统计就方便了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-18 09:00 , Processed in 0.370468 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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