zxjing 发表于 2010-7-11 10:04

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

本帖最后由 作者 于 2010-7-15 12:05:11 编辑 <br /><br /> <p><font face="Verdana">恳请斑竹大人帮忙撒</font></p>
<p><font face="Verdana"></font></p>
<p>已知,在CAD特性面板中有面积属性,</p>
<p>需要程序提取<font color="#ff0000">大量闭合PL线的</font>&nbsp;<font color="#ff0000"> 面积</font>属性,并置于该图形中心(形心,中心,重心,什么心都可以)</p>
<p>卖软件的免进~谢</p>

bingxiaoying 发表于 2017-12-21 18:09

菜鸟想要问一问启动的命令是啥啊

1641618393 发表于 2016-10-29 10:40

要发帖数高于10才可以浏览啊,只好继续发帖了

gufeng 发表于 2010-7-12 11:27

(defun c:test (/ AREA_H AREA_WS ERRHAN NEWENTLAST OBJ OBJ_AREA OBJ_I OBJ_NAME OBJ_VLA OLDCMDECHO OLDDELOBJ OLDENTLAST PT)
(setq obj (ssget "x" '((0 . "*POLYLINE"))))
(if obj
    (progn
      (setq obj_i -1)
      (setq oldcmdecho (getvar "cmdecho"))
      (setq oldDELOBJ (getvar "DELOBJ"))
      (setvar "cmdecho" 0);_禁止回显
      (setvar "DELOBJ" 0);_控制创建面域保留原对象
      (setq errhan '());_不能创建面域的图元句柄表
      (setq area_ws 3);_面积的小数位数
      (setq area_h 3);_面积文字的高度
      (repeat (sslength obj)
(setq obj_name (ssname obj (setq obj_i (1+ obj_i))));_图元名
(setq obj_vla (vlax-ename->vla-object obj_name));_Vla对象
(if (vlax-curve-isClosed obj_vla);_如果曲线闭合
   (progn
   (setq oldentlast (entlast))
   (command "_region" obj_name "");_创建面域
   (setq newentlast (entlast))
   (if (equal oldentlast newentlast);_如果创建面域不成功
       (progn
(setq errhan (cons (cdr (assoc 5 (entget obj_name))) errhan))
)
       (progn
(setq obj_area (vla-get-Area obj_vla));_面积
(setq pt (vlax-safearray->list (vlax-variant-value (vla-get-centroid (vlax-ename->vla-object newentlast)))))
(command "-text" "j" "mc" pt area_h 0 (rtos obj_area 2 area_ws))
(entdel newentlast)
)
       )
   )
   )
)
      (if errhan
(progn
(princ "\n没有标注面积的图元句柄列表:\n")
(princ errhan)
)
)
      (setvar "DELOBJ" oldDELOBJ)
      (setvar "cmdecho" oldcmdecho)
    )
)
(princ)
)

zxjing 发表于 2010-7-12 12:57

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

ZZXXQQ 发表于 2010-7-12 20:04

<p>程序开头加一句:(vl-load-com)</p>

zxjing 发表于 2010-7-14 23:07

谢过版主大人,明天测试

zxjing 发表于 2010-7-15 12:06

<img alt="帅哥,在线噢!" src="http://bbs.mjtd.com/Skins/Default/Male.gif"/>
<div><span style="FILTER: glow(color='#A6BA98',strength='2'); WIDTH: 105px"><font face="Verdana" color="#61b713"><b>gufeng</b></font>,谢谢你,还有版主大人</div></span>

xd-xdcad 发表于 2010-7-19 12:00

<p>这个程序非常好i,若是能够先选择对象,然后仅仅标注已选择的对象的面积就好了</p>
<p>从而实现选择对象,然后自动标注面积</p>

Gu_xl 发表于 2010-7-22 11:45

xd-xdcad发表于2010-7-19 12:00:00static/image/common/back.gif这个程序非常好i,若是能够先选择对象,然后仅仅标注已选择的对象的面积就好了
从而实现选择对象,然后自动标注面积


<p>把 (setq obj (ssget "x" '((0 . "*POLYLINE")))) 改为 (setq obj (ssget&nbsp; '((0 . "*POLYLINE")))) 即可!</p>

xd-xdcad 发表于 2010-7-25 08:38

本帖最后由 作者 于 2010-7-25 9:07:06 编辑 <br /><br /> <p>谢谢<font face="Verdana" color="#61b713"><b>Gu_xl</b></font></p>
<p><strong><font color="#61b713">实验成功,但又发现了一个小问题,不知是否方便将得到的结果除以10的6次方,其他与原先一致?</font></strong></p>
<p><strong><font color="#61b713">例如原先的面积单位是平方毫米,现在改为平方米?</font></strong></p><strong><font color="#61b713">
<p><strong><font color="#61b713">在上面这个程序对没有使用闭合命令的PL线不起作用,不知是否方便更改?</font></strong></p></font></strong>
<p><font face="Verdana">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=63167&amp;replyID=&amp;skin=0</font></p>
<p><strong><font color="#61b713">在上面链接中,<font face="Verdana" color="#da2549"><b>ZZXXQQ</b></font>版主提供了一个非常好程序,没有使用闭合命令C的PL线面积也能够计算出来,遗憾的是一次仅仅能够计算一个图形面积,若能同时选择多个图形并分别计算面积就好了?并且<font face="Verdana" color="#da2549"><b>ZZXXQQ</b></font>版主的程序也存在面积单位的问题,与我想象的程序不一致,不知能否将两个程序的优点结合在一起?</font></strong></p>

艾什顿 发表于 2010-7-27 18:14

页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 提取大量闭合PL线的面积属性并写入图形中心(已解决)