明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3240|回复: 8

求助!!关于统计封闭区域内多段线的数量!

[复制链接]
发表于 2012-4-16 10:34:42 | 显示全部楼层 |阅读模式
1明经币
各位大侠!因工作需要,需要大量统计一个闭区域内多段线的数量,很是繁琐,请各位大侠帮帮忙。
如果能够随带标出区域的面积,那是最好不过。
悬赏只是个噱头,还望各位大侠不弃!
不胜感激!

最佳答案

查看完整内容

不是很完整,用着先吧…… 统计面积、对象个数: 统计线段长度、数量:
发表于 2012-4-16 10:34:43 | 显示全部楼层
本帖最后由 hlmdf 于 2012-4-16 11:56 编辑

不是很完整,用着先吧……
统计面积、对象个数:
  1. (defun c:TA(/ ss tarea obj k l)
  2.   (setvar "cmdecho" 0)
  3.   (if (setq ss (ssget))
  4.     (progn
  5.       (vl-load-com)
  6.       (setq l (sslength ss) k 0 tarea 0 )
  7.       (repeat l
  8.         (setq ename (ssname ss k))
  9.         (setq obj (vlax-ename->vla-object ename))
  10.         (if (vlax-property-available-p obj "area")
  11.           (setq tarea (+ (vlax-get-property obj 'area) tarea))
  12.         )
  13.         (setq k (1+ k))
  14.       )
  15.       (setq tarea (/ tarea 1000000))
  16.       (princ (strcat "\n共选择 " (itoa l) " 个对象 | 总面积: " (rtos tarea 2 3)))
  17.     )
  18.     (princ "\n未选择对象")
  19.   )
  20.   (setvar "cmdecho" 1)
  21.   (prin1)
  22. )
统计线段长度、数量:
  1. (defun c:TG(/ ss tlen obj k l)
  2.   (setvar "cmdecho" 0)
  3.   (if (setq ss (ssget))
  4.     (progn
  5.       (vl-load-com)
  6.       (setq l (sslength ss) k 0 tlen 0 )
  7.       (repeat l
  8.         (setq ename (ssname ss k))
  9.         (setq obj (vlax-ename->vla-object ename))
  10.         (if (= (cdr (assoc 0 (entget ename))) "MLINE")
  11.           (setq tlen (+ tlen (ml-length ename)))
  12.           (setq tlen (+ tlen (vlax-curve-getdistatparam ename (vlax-curve-getendparam ename))))
  13.         )
  14.         (setq k (1+ k))
  15.       )
  16.       (princ (strcat "\n共选择 " (itoa l) " 个对象 | 总长度: " (rtos tlen 2 0)))
  17.     )
  18.     (princ "\n未选择对象")
  19.   )
  20.   (setvar "cmdecho" 1)
  21.   (prin1)
  22. )


回复

使用道具 举报

 楼主| 发表于 2012-4-16 12:54:30 | 显示全部楼层
试用中。。。
谢谢!!
回复

使用道具 举报

 楼主| 发表于 2012-4-16 13:05:58 | 显示全部楼层
本帖最后由 TimeT 于 2012-4-16 13:07 编辑

大侠,不好意思,我没有表述清楚。主要是统计一个封闭区域内其他多段线的数量(条数)
具体还麻烦看看图片(不会发,还麻烦移步附件),统计黄色区域内绿色多段线的数量,如果可能的会面积也如黄色文字般显示。。
不胜感激!

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2012-4-16 14:43:46 | 显示全部楼层
TimeT 发表于 2012-4-16 13:05
大侠,不好意思,我没有表述清楚。主要是统计一个封闭区域内其他多段线的数量(条数)
具体还麻烦看看图片 ...

呃,CAD好像没有选择封闭多义线区域图元的功能,难道要历遍所有图元判断是否在该区域内?
求高手解释下……
回复

使用道具 举报

发表于 2012-4-16 14:46:31 | 显示全部楼层
TimeT 发表于 2012-4-16 13:05
大侠,不好意思,我没有表述清楚。主要是统计一个封闭区域内其他多段线的数量(条数)
具体还麻烦看看图片 ...

标注面积:
  1. (defun c:TAT(/ ss tarea obj k l)
  2.   (setvar "cmdecho" 0)
  3.   (if (setq ss (ssget))
  4.     (progn
  5.       (vl-load-com)
  6.       (setq l (sslength ss) k 0 tarea 0 )
  7.       (repeat l
  8.         (setq ename (ssname ss k))
  9.         (setq obj (vlax-ename->vla-object ename))
  10.         (if (vlax-property-available-p obj "area")
  11.           (setq tarea (+ (vlax-get-property obj 'area) tarea))
  12.         )
  13.         (setq k (1+ k))
  14.       )
  15.       (setq tarea (/ tarea 1000000))
  16.       (princ (strcat "\n共选择 " (itoa l) " 个对象 | 总面积: " (rtos tarea 2 3)))
  17.       (command "text" (getpoint "\n选取文字插入点") "" "" (rtos tarea 2 3))
  18.     )
  19.     (princ "\n未选择对象")
  20.   )
  21.   (setvar "cmdecho" 1)
  22.   (prin1)
  23. )
标注前可以先设置下textsize
回复

使用道具 举报

 楼主| 发表于 2012-4-16 19:32:43 | 显示全部楼层
谢谢hlmdf!!
学习了。
回复

使用道具 举报

发表于 2012-4-16 22:13:10 | 显示全部楼层
..........................
回复

使用道具 举报

发表于 2015-8-23 01:51:07 | 显示全部楼层
各种厉害哦,学习下!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 21:44 , Processed in 0.196587 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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