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

461045462 发表于 2010-8-5 06:47:00

<p>谢谢<font face="Verdana" color="#61b713"><b>gufeng</b></font>与斑竹</p>
<p>下载了收集起来,好好学习学习</p>

gufeng 发表于 2010-8-5 14:46:00

根据你说的修改了,可以计算出没有使用Close闭合的多段线,前提是多段线的首尾节点需要重合.


(defun c:test (/ AREA_H      AREA_WSERRHAN      NEWENTLAST
   OBJ      OBJ_AREAOBJ_I      OBJ_NAME
   OBJ_VLA   OLDCMDECHOOLDDELOBJ   OLDENTLAST
   PT JD
)
(vl-load-com)
(setq obj (ssget '((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) ;_面积文字的高度
      (setq jd 1e6);_面积除以这个数 1e6=10的6次方 需要自己设定
      (repeat (sslength obj)
(setq obj_name (ssname obj (setq obj_i (1+ obj_i)))) ;_图元名
(setq obj_vla (vlax-ename->vla-object obj_name)) ;_Vla对象
(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)) ;_面积
   (setqobj_area (/ obj_area jd))
   (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)
)

xd-xdcad 发表于 2010-8-7 07:54:00

谢谢楼主的更改,我会进一步试验程序,若有问题会及时反馈给楼主

xd-xdcad 发表于 2010-8-10 13:16:00

<p>不知怎的,又出现下面提示</p>
<p><font face="Verdana">错误: no function definition: VLAX-ENAME-&gt;VLA-OBJECT</font></p>
<p>原先仅安装2002,程序执行没有问题,安装2004后,在2002系统中,出项错误提示</p>
<p><font face="Verdana">补充一句,在2004系统中没有问题<br/>&nbsp;</p></font>

gufeng 发表于 2010-8-10 23:31:00

<p>估计你使用的是2楼的代码 使用11楼的代码应该没问题</p>
<p><font face="Verdana">错误: no function definition: VLAX-ENAME-&gt;VLA-OBJECT</font> </p>
<p>&nbsp;&nbsp; 是没有将 Visual LISP 扩展功能加载到 AutoLISP 使用 (vl-load-com)即可 11楼的代码已经加上</p>

linshiyin2 发表于 2010-8-11 08:05:00

留个记号

xd-xdcad 发表于 2010-8-11 10:01:00

<p>加载的就是楼主11楼的程序</p>
<p>我原先安装了2002版本,运行楼主的程序没有问题,自从安装了2004后,今天发现,不仅楼主的程序不能运行,好多程序都不能运行了,包括LSP、VLX</p>
<p><font face="Verdana"><font face="Verdana"><font face="Verdana">加载LSP程序出现:错误: no function definition: VLAX-ENAME-&gt;VLA-OBJECT</font> <br/>加载VLX出现:警告:未能加载Autocad类型库:“加载类型库/DLL时出错"</font></font></p>

gufeng 发表于 2010-8-11 13:53:00

<p>修复安装2002试试,如果不行,找论坛的高手帮帮忙,没遇到过这问题,抱歉.</p>

461045462 发表于 2010-8-13 12:45:00

<p>谢谢</p>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FILTER: glow(color='#A6BA98',strength='2'); WIDTH: 105px"><font face="Verdana" color="#61b713"><b>gufeng</b></font>很实用</div>
<div>我使用了很好</div></span>
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: 提取大量闭合PL线的面积属性并写入图形中心(已解决)