LISP统计圆弧数量_求大神告知,如何用LISP实现块数量分类统计程序,最好统计后列出表格。谢谢了。...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这个可以统计各种块的数量(基于块名),但是不能生成表格。

(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

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值