明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 47197|回复: 171

提取大量闭合PL线的面积属性并写入图形中心(已解决)

  [复制链接]
发表于 2010-7-11 10:04 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-7-15 12:05:11 编辑

恳请斑竹大人帮忙撒

已知,在CAD特性面板中有面积属性,

需要程序提取大量闭合PL线的  面积属性,并置于该图形中心(形心,中心,重心,什么心都可以)

卖软件的免进~谢

发表于 2017-12-21 18:09 | 显示全部楼层
菜鸟想要问一问  启动的命令是啥啊
发表于 2016-10-29 10:40 | 显示全部楼层
要发帖数高于10才可以浏览啊,只好继续发帖了
发表于 2010-7-12 11:27 | 显示全部楼层
  1. (defun c:test (/ AREA_H AREA_WS ERRHAN NEWENTLAST OBJ OBJ_AREA OBJ_I OBJ_NAME OBJ_VLA OLDCMDECHO OLDDELOBJ OLDENTLAST PT)
  2.   (setq obj (ssget "x" '((0 . "*POLYLINE"))))
  3.   (if obj
  4.     (progn
  5.       (setq obj_i -1)
  6.       (setq oldcmdecho (getvar "cmdecho"))
  7.       (setq oldDELOBJ (getvar "DELOBJ"))
  8.       (setvar "cmdecho" 0);_禁止回显
  9.       (setvar "DELOBJ" 0);_控制创建面域保留原对象
  10.       (setq errhan '());_不能创建面域的图元句柄表
  11.       (setq area_ws 3);_面积的小数位数
  12.       (setq area_h 3);_面积文字的高度
  13.       (repeat (sslength obj)
  14. (setq obj_name (ssname obj (setq obj_i (1+ obj_i))));_图元名
  15. (setq obj_vla (vlax-ename->vla-object obj_name));_Vla对象
  16. (if (vlax-curve-isClosed obj_vla);_如果曲线闭合
  17.    (progn
  18.      (setq oldentlast (entlast))
  19.      (command "_region" obj_name "");_创建面域
  20.      (setq newentlast (entlast))
  21.      (if (equal oldentlast newentlast);_如果创建面域不成功
  22.        (progn
  23.   (setq errhan (cons (cdr (assoc 5 (entget obj_name))) errhan))
  24.   )
  25.        (progn
  26.   (setq obj_area (vla-get-Area obj_vla));_面积
  27.   (setq pt (vlax-safearray->list (vlax-variant-value (vla-get-centroid (vlax-ename->vla-object newentlast)))))
  28.   (command "-text" "j" "mc" pt area_h 0 (rtos obj_area 2 area_ws))
  29.   (entdel newentlast)
  30.   )
  31.        )
  32.      )
  33.    )
  34. )
  35.       (if errhan
  36. (progn
  37. (princ "\n没有标注面积的图元句柄列表:\n")
  38. (princ errhan)
  39. )
  40. )
  41.       (setvar "DELOBJ" oldDELOBJ)
  42.       (setvar "cmdecho" oldcmdecho)
  43.     )
  44.   )
  45.   (princ)
  46. )

点评

如何统计周长呢??  发表于 2014-4-29 14:35
 楼主| 发表于 2010-7-12 12:57 | 显示全部楼层

谢谢热心大侠,试加载了一下,出现如上错误,恳请大侠再度出手,小弟不胜感激~

本帖子中包含更多资源

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

x
发表于 2010-7-12 20:04 | 显示全部楼层

程序开头加一句:(vl-load-com)

 楼主| 发表于 2010-7-14 23:07 | 显示全部楼层
谢过版主大人,明天测试
 楼主| 发表于 2010-7-15 12:06 | 显示全部楼层
帅哥,在线噢!
gufeng,谢谢你,还有版主大人
发表于 2010-7-19 12:00 | 显示全部楼层

这个程序非常好i,若是能够先选择对象,然后仅仅标注已选择的对象的面积就好了

从而实现选择对象,然后自动标注面积

发表于 2010-7-22 11:45 | 显示全部楼层
xd-xdcad发表于2010-7-19 12:00:00这个程序非常好i,若是能够先选择对象,然后仅仅标注已选择的对象的面积就好了 从而实现选择对象,然后自动标注面积

把 (setq obj (ssget "x" '((0 . "*POLYLINE")))) 改为 (setq obj (ssget  '((0 . "*POLYLINE")))) 即可!

发表于 2010-7-25 08:38 | 显示全部楼层
本帖最后由 作者 于 2010-7-25 9:07:06 编辑

谢谢Gu_xl

实验成功,但又发现了一个小问题,不知是否方便将得到的结果除以10的6次方,其他与原先一致?

例如原先的面积单位是平方毫米,现在改为平方米?

在上面这个程序对没有使用闭合命令的PL线不起作用,不知是否方便更改?

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=63167&replyID=&skin=0

在上面链接中,ZZXXQQ版主提供了一个非常好程序,没有使用闭合命令C的PL线面积也能够计算出来,遗憾的是一次仅仅能够计算一个图形面积,若能同时选择多个图形并分别计算面积就好了?并且ZZXXQQ版主的程序也存在面积单位的问题,与我想象的程序不一致,不知能否将两个程序的优点结合在一起?

发表于 2010-7-27 18:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-16 23:06 , Processed in 0.237922 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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