newer 发表于 2017-2-16 22:09:23

套内面积标注(二)

本帖最后由 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)
)

sicky111 发表于 2017-2-17 00:00:55

啥也不说了,感谢楼主分享哇!

longer1000 发表于 2017-2-17 10:30:35

啥也不说了,感谢楼主分享哇!

455383153 发表于 2017-2-22 07:50:27

啥也不说了,感谢楼主分享哇!

kqqt6236 发表于 2017-4-25 00:06:20

啥也不说了,感谢楼主分享哇!

yufeng37 发表于 2017-4-25 17:11:46

感谢newer版主的好东西

angliangcn 发表于 2017-5-17 11:53:48

下来学习一下

angliangcn 发表于 2017-5-17 11:55:09

感谢newer版主的好东西

cad大渣渣 发表于 2018-1-9 13:34:56

套内面积可以计算,但是插入文字时候出现“no function definition: xdrx_mleader_make”的错误,如何解决

zhouzhiy 发表于 2018-1-10 08:56:26

谢谢楼主分享!

newer 发表于 2018-1-10 10:32:47

cad大渣渣 发表于 2018-1-9 13:34


mleader是2008+版本才有的,你是不是在低于2008的CAD用的? 换2008以上就行了。

zhc19930728 发表于 2018-9-3 11:22:56

很强大,这个可以的

j3926000 发表于 2019-1-2 15:11:02

标注的单位是平,怎么样可以改成㎡?

z562261070 发表于 2019-6-22 10:15:40

错误: 参数类型错误: fixnump: >=               CAD2019提示的。。。。

liaozhongshan 发表于 2019-9-14 23:20:25

非常好的功能,感谢楼主的分享。
页: [1] 2
查看完整版本: 套内面积标注(二)