明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3400|回复: 16

[源码] 绿化乔木统计(图块统计)

  [复制链接]
发表于 2015-4-24 13:21 | 显示全部楼层 |阅读模式
本帖最后由 77077 于 2015-4-24 13:22 编辑

走过路过,可以进来看看,不收钱不代表不好用~~~
  1. ;========================
  2. ;   绿化乔木统计         
  3. ;========================
  4. ;
  5. ;
  6. ;图块选择集到图块名列表
  7. (defun ss-insert-namelist (ss / i en lst_en)
  8.   (setq lst_en '()
  9.   i 0
  10.   )
  11.   (repeat (sslength ss)
  12.     (setq en (ssname ss i)
  13.     en (cdr(assoc 2 (entget en)))
  14.     lst_en (cons en lst_en)
  15.     i (1+ i)
  16.     )
  17.     )
  18.   (reverse lst_en)
  19.   )
  20. ;;;统计同名块数量,并格式化数据
  21. (defun Countblocklist (lst / a len x return)
  22.   (while lst
  23.     (setq a (car lst))
  24.     (setq len (length lst))
  25.     (setq lst (vl-remove-if '(lambda (x) (= a x)) lst))
  26.     (setq return (cons (list a a (itoa(- len (length lst))) "-" "-" "-" "-" "-") return))
  27.     )
  28.   return
  29.   )
  30. ;图块列表输出到屏幕
  31. (defun BLKLst2Table (lis pt zg / emkLine emkText h len1 len2 i h1 w2 tab_h len j w1 w2 wlst p0 p1 txt)
  32.   (defun emkLine (p1 p2)
  33.     (entmake (list '(0 . "LINE") (cons 8 "DM_文字表格") (cons 10 p1) (cons 11 p2)))
  34.     )
  35.   (defun emkText (pt str h)
  36.     (entmake (list '(0 . "TEXT") (cons 1 str) '(8 . "DM_文字表格") (cons 10 pt) (cons 40 h) (cons 11 pt) (cons 72 1) (cons 73 2)))
  37.     )
  38.   (defun emkInsert (pt blkname bl)
  39.     (entmake (list '(0 . "INSERT") (cons 2 blkname) (cons 8 "DM_文字表格") (cons 10 pt)(cons 41 bl)(cons 42 bl)))
  40.     )
  41.   (setq h (* zg 2)
  42.   len1 (length lis)
  43.   len2 8
  44.   p0 (list (car pt) (- (cadr pt) (* 0.5 h)))
  45.   wlst (mapcar '(lambda(x) (* x zg)) '(4 8 6 6 6 6 6 10))
  46.   )
  47.   (setq i 0 j 0 w1 0 w2 0)
  48.   (foreach e lis
  49.     (setq h1 (- (cadr p0) (* i h)))
  50.     (foreach f e
  51.       (setq w1 (nth j wlst) w2 (+ w2 w1))
  52.       (setq p1 (list (- (+ (car p0) w2) (* w1 0.5)) h1))
  53.       (if (= i 0)
  54.   (emkText P1 f zg)
  55.   (if (= j 0)
  56.     (emkInsert P1 f zg)
  57.     (emkText P1 f zg)
  58.     )
  59.   )
  60.       (setq j (1+ j))
  61.       )
  62.     (setq i (1+ i) j 0 w1 0 w2 0)
  63.     )
  64.   (setq tab_h (* len1 h))
  65.   (emkLine pt (polar pt (* pi 1.5) tab_h))
  66.   (setq len 0)
  67.   (foreach x wlst
  68.     (setq len (+ x len) p1 (polar pt 0 len))
  69.     (emkLine p1 (polar p1 (* Pi 1.5) tab_h))
  70.     )
  71.   (setq i 0 len 0)
  72.   (setq len (apply '+ wlst))
  73.   (repeat (1+ len1)
  74.     (setq p1 (polar pt (* Pi 1.5) (* i h)) i (1+ i))
  75.     (emkLine p1 (polar p1 0 len))
  76.     )
  77.   (princ)
  78.   )
  79. ;main
  80. (defun c:TreeCount( / os lst sslst x zg pt )
  81.   (setvar "cmdecho" 0)
  82.   (setq os (getvar "osmode"))
  83.   (setvar "osmode" 0)
  84.   (setq lst '("图例" "植物名称" "数量(株)" "株高(CM)" "胸径(CM)" "地径(CM)" "冠幅(CM)" "备注"))
  85.   (setq sslst(ssget (list '(0 . "INSERT"))))
  86.   (if sslst
  87.     (progn
  88.       (setq sslst (ss-insert-namelist sslst)
  89.       sslst (Countblocklist sslst)
  90.       lst (cons lst sslst)
  91.       )
  92.       (setq zg(getreal "\n字高: ")
  93.       pt(getpoint "\n左上角: ")
  94.       )
  95.       (BLKLst2Table lst pt zg)
  96.       )
  97.     (alert "没选到图块!")
  98.     )
  99.   (setvar "osmode" os)
  100.   (prin1)
  101.   )

本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
zctao1966 + 1 很给力!
USER2128 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-12-16 10:42 | 显示全部楼层
图块比例和图框不统一,统计图例变得很大!
发表于 2019-12-16 19:07 来自手机 | 显示全部楼层
谢谢楼主分享
发表于 2019-12-14 19:21 | 显示全部楼层
可以的,不错!
发表于 2015-4-24 13:32 | 显示全部楼层
沙发,学习一下
发表于 2015-4-24 14:51 | 显示全部楼层
支持!!!!
发表于 2015-4-24 16:29 | 显示全部楼层
不错,赞一个
发表于 2015-4-24 19:02 | 显示全部楼层
感谢 77077 分享程序 赞一个!
发表于 2015-4-24 22:04 | 显示全部楼层
顶一下,不错........
发表于 2015-4-25 08:48 | 显示全部楼层
很实用的插件,谢谢共享。
发表于 2015-4-25 11:16 | 显示全部楼层
绝对喜欢,可是楼主能像严大师那样变成这样的效果吗?
http://bbs.mjtd.com/forum.php?mo ... C%BF%E9%CD%B3%BC%C6
发表于 2015-4-25 17:23 | 显示全部楼层
这个是一个免费版本的园林工具


本帖子中包含更多资源

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

x
发表于 2015-4-25 17:37 | 显示全部楼层
不错,赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 06:55 , Processed in 0.207542 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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