明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4015|回复: 9

块统计!求完善!

[复制链接]
发表于 2011-12-7 14:50:44 | 显示全部楼层 |阅读模式
  1. (defun c:P185()
  2.    (setvar "cmdecho" 0)
  3.    (setq os (getvar "osmode"))
  4.    (setvar "osmode" 0)
  5.    (setq pt1 (getpoint "\n左上角: "));getpoint 让用户点选一个点
  6.    (setq ww (getdist pt1 "\n宽度 <50>: "));等待用户输入一个距离值或用鼠标点选
  7.    (if (null ww) (setq ww 40.0));判断用户输入的距离是否为空,为空则默认为40.0
  8.    (setq hh (getdist pt1 "\n每格高度 <8>: "));等待用户输入每格的高度
  9.    (if (null hh) (setq hh 8.0));判断用户输入的值是否为空,为空则默认为8.0
  10.    (setq pt2 (polar pt1 0 ww));
  11.    (setq pt3 (polar pt2 (* pi 1.5) hh))
  12.    (setq pt4 (polar pt1 (* pi 1.5) hh))
  13.    (command "pline" pt1 pt2 pt3 pt4 "c")
  14.    (setq pt5 (polar pt1 0 (/ ww 2)))
  15.    (setq pt6 (polar pt5 (* pi 1.5) hh))
  16.    (command "line" pt5 pt6 "")
  17.    (command "text" "m" (inters pt1 pt6 pt4 pt5) (/ hh 2) 0 "图块名称")
  18.    (command "text" "m" (inters pt5 pt3 pt2 pt6) (/ hh 2) 0 "数量")  
  19.     (setq blk (tblnext "block" t))
  20.     (while blk
  21.       (setq blkn (assoc 2 blk))
  22.       (setq blk_key (substr (cdr blkn) 1 1))
  23.       (if (/= blk_key "*")
  24.          (progn
  25.             (setq ss (ssget "X" (list blkn)))
  26.             (if (null ss)
  27.                (setq ssn 0)
  28.                (setq ssn (sslength ss))              
  29.             )
  30.             (setq blknn (cdr blkn))
  31.             (setq pt1 pt4 pt5 pt6 pt2 pt3)
  32.             (setq pt4 (polar pt1 (* pi 1.5) hh))
  33.             (setq pt6 (polar pt5 (* pi 1.5) hh))
  34.             (setq pt3 (polar pt2 (* pi 1.5) hh))
  35.             (command "pline" pt2 pt3 pt4 pt1 "")
  36.             (command "line" pt5 pt6 "")
  37.             (command "text" "m" (inters pt1 pt6 pt4 pt5) (/ hh 2) 0 blknn)
  38.             (command "text" "m" (inters pt5 pt3 pt2 pt6) (/ hh 2) 0 (itoa

  39. ssn))
  40.          )
  41.       )
  42.       (setq blk (tblnext "block"))
  43.    )
  44.    (setvar "osmode" os)
  45.    (prin1)
  46. )

求高手帮忙把此程序改一下,希望统计的块是让用户自己选取一个范围内的!上面的这程序是统计了整个图上所有的图块了!

本帖被以下淘专辑推荐:

 楼主| 发表于 2011-12-7 14:54:47 | 显示全部楼层
高手们帮忙改一下!最好能让程序自动判断出块名字的最长一个而表的每格就刚好是能放心最长的那个快名称!
 楼主| 发表于 2011-12-7 14:57:54 | 显示全部楼层
高手能给点怎么取得块的名称最长的一个的思路也行!还有用什么函数实现,最好不要是VL-开头的这种……!
小弟在这先谢谢了!
发表于 2011-12-7 18:23:16 | 显示全部楼层
下面的连接你可以参考下,也是源码
http://bbs.mjtd.com/thread-90798-1-1.html
发表于 2012-2-17 09:11:46 | 显示全部楼层
不用这么麻烦,工具里--数据提取就带着个功能,块的所有属性都可以列表导出。不过楼主的代码很好,学习了。
发表于 2012-5-3 08:49:04 | 显示全部楼层
学习~~~~~~
发表于 2012-6-18 14:25:01 | 显示全部楼层
学习中。
发表于 2012-10-26 08:44:12 | 显示全部楼层
本帖最后由 fcut2004 于 2012-10-26 08:46 编辑

把这句改改(setq ss (ssget "X" (list blkn))),就可以自己框选范围了。最好再结合重叠块的子程序。1、判断没有重叠的块。2、统计数量。
发表于 2013-8-22 10:47:12 | 显示全部楼层
路过看看  顶一个
发表于 2015-6-3 11:34:28 | 显示全部楼层
学习了顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 13:43 , Processed in 0.179807 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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