套内面积标注(二)
本帖最后由 newer 于 2017-2-16 22:12 编辑使用MPolygon对象的方法计算套内面积
(defun c:xdtb_curveinarea ( / area area1 blk dynpt e ents ml mp p1 scl ss)
(defun _callback (dynpt)
(xdrx_setpropertyvalue ml "lastvertex" dynpt)
)
(defun _dim (area)
(setq area1 area)
(if (= 1 (xd::var:getdrawingunit))
(setq area1 (/ area 1e6))
)
(if (setq p1 (getpoint "\n标注文字插入点:"))
(progn
(xd::text:init 1)
(xd::dim:init)
(setq blk (xdrx_document_makeablock "_dot"))
(setq ml (xdrx_mleader_make p1 p1 (strcat "S=" (rtos area1 2
(getvar "dimdec")
) "平"
) (* 3.5
(xd::var:getratio)
)
)
)
(setq scl (xd::var:getratio))
(xdrx_setpropertyvalue ml "dogleglength" (* 2 scl) "scale"
(xd::var:getscaleratio) "landinggap"
(* 2 scl) "arrowsize" (* 1.5 scl)
"ArrowSymbolId" blk
)
(xdrx_pointmonitor "_callback")
(getpoint)
(xdrx_pointmonitor)
)
)
)
(XD::Doc:CheckVersion '>= "17.0" "")
(if (and
(xdrx_initssget "选取计算套内面积的封闭曲线<退出>:")
(setq ss (xdrx_ssget '((0 . "*POLYLINE,ELLIPSE,CIRCLE,SPLINE"))))
)
(progn
(setq ents nil)
(xdrx_setsstodb ss 0)
(while (setq e (xdrx_getentdata 0))
(xdrx_curve_setclosed e t)
(setq ents (cons e ents))
)
(if (setq mp (xdrx_mpolygon_make ents))
(progn
(setq area (xdrx_getpropertyvalue mp "area"))
(xdrx_entity_delete mp)
(xdrx_printf "\n套内面积为:%.1f 平方米." area)
(_dim area)
)
)
)
)
(princ)
)
啥也不说了,感谢楼主分享哇! 啥也不说了,感谢楼主分享哇! 啥也不说了,感谢楼主分享哇! 啥也不说了,感谢楼主分享哇! 感谢newer版主的好东西 下来学习一下 感谢newer版主的好东西 套内面积可以计算,但是插入文字时候出现“no function definition: xdrx_mleader_make”的错误,如何解决 谢谢楼主分享! cad大渣渣 发表于 2018-1-9 13:34
mleader是2008+版本才有的,你是不是在低于2008的CAD用的? 换2008以上就行了。
很强大,这个可以的 标注的单位是平,怎么样可以改成㎡? 错误: 参数类型错误: fixnump: >= CAD2019提示的。。。。 非常好的功能,感谢楼主的分享。
页:
[1]
2