求助!!关于统计封闭区域内多段线的数量!
各位大侠!因工作需要,需要大量统计一个闭区域内多段线的数量,很是繁琐,请各位大侠帮帮忙。如果能够随带标出区域的面积,那是最好不过。
悬赏只是个噱头,还望各位大侠不弃!
不胜感激!
本帖最后由 hlmdf 于 2012-4-16 11:56 编辑
不是很完整,用着先吧……
统计面积、对象个数:
(defun c:TA(/ ss tarea obj k l)
(setvar "cmdecho" 0)
(if (setq ss (ssget))
(progn
(vl-load-com)
(setq l (sslength ss) k 0 tarea 0 )
(repeat l
(setq ename (ssname ss k))
(setq obj (vlax-ename->vla-object ename))
(if (vlax-property-available-p obj "area")
(setq tarea (+ (vlax-get-property obj 'area) tarea))
)
(setq k (1+ k))
)
(setq tarea (/ tarea 1000000))
(princ (strcat "\n共选择 " (itoa l) " 个对象 | 总面积: " (rtos tarea 2 3)))
)
(princ "\n未选择对象")
)
(setvar "cmdecho" 1)
(prin1)
)统计线段长度、数量:
(defun c:TG(/ ss tlen obj k l)
(setvar "cmdecho" 0)
(if (setq ss (ssget))
(progn
(vl-load-com)
(setq l (sslength ss) k 0 tlen 0 )
(repeat l
(setq ename (ssname ss k))
(setq obj (vlax-ename->vla-object ename))
(if (= (cdr (assoc 0 (entget ename))) "MLINE")
(setq tlen (+ tlen (ml-length ename)))
(setq tlen (+ tlen (vlax-curve-getdistatparam ename (vlax-curve-getendparam ename))))
)
(setq k (1+ k))
)
(princ (strcat "\n共选择 " (itoa l) " 个对象 | 总长度: " (rtos tlen 2 0)))
)
(princ "\n未选择对象")
)
(setvar "cmdecho" 1)
(prin1)
)
试用中。。。
谢谢!! 本帖最后由 TimeT 于 2012-4-16 13:07 编辑
大侠,不好意思,我没有表述清楚。主要是统计一个封闭区域内其他多段线的数量(条数)
具体还麻烦看看图片(不会发,还麻烦移步附件),统计黄色区域内绿色多段线的数量,如果可能的会面积也如黄色文字般显示。。
不胜感激! TimeT 发表于 2012-4-16 13:05 static/image/common/back.gif
大侠,不好意思,我没有表述清楚。主要是统计一个封闭区域内其他多段线的数量(条数)
具体还麻烦看看图片 ...
呃,CAD好像没有选择封闭多义线区域图元的功能,难道要历遍所有图元判断是否在该区域内?
求高手解释下…… TimeT 发表于 2012-4-16 13:05 static/image/common/back.gif
大侠,不好意思,我没有表述清楚。主要是统计一个封闭区域内其他多段线的数量(条数)
具体还麻烦看看图片 ...
标注面积:(defun c:TAT(/ ss tarea obj k l)
(setvar "cmdecho" 0)
(if (setq ss (ssget))
(progn
(vl-load-com)
(setq l (sslength ss) k 0 tarea 0 )
(repeat l
(setq ename (ssname ss k))
(setq obj (vlax-ename->vla-object ename))
(if (vlax-property-available-p obj "area")
(setq tarea (+ (vlax-get-property obj 'area) tarea))
)
(setq k (1+ k))
)
(setq tarea (/ tarea 1000000))
(princ (strcat "\n共选择 " (itoa l) " 个对象 | 总面积: " (rtos tarea 2 3)))
(command "text" (getpoint "\n选取文字插入点") "" "" (rtos tarea 2 3))
)
(princ "\n未选择对象")
)
(setvar "cmdecho" 1)
(prin1)
)标注前可以先设置下textsize 谢谢hlmdf!!
学习了。 .......................... 各种厉害哦,学习下!
页:
[1]