myjping 发表于 2014-8-11 10:22:50

如果填充没有面积属性,会出错

本帖最后由 myjping 于 2014-8-11 11:55 编辑


用(vla-get-Area (vlax-ename->vla-object (car(entsel))))获取填充的面积时,如果填充没有面积属性,用这一句时会出错,如何避免呢

edata 发表于 2014-8-11 11:27:43

_$ (vlax-property-available-p myCircle 'area)
T

edata 发表于 2014-8-11 12:23:27

试过了,填充本身问题,无法避免,估计只能用出错处理。

edata 发表于 2014-8-11 12:40:57

(defun ss-get-area (ent / area)
(if (= (type ent) 'ENAME) (setq ent (ss-en2x ent)))
   (vl-catch-all-apply
      '(lambda () (setq area (vla-get-area ent)))
   )
   area
)
vl-catch-all-apply

xyp1964 发表于 2014-8-11 13:02:40

Area: 237.6616

firstinti 发表于 2014-8-11 13:16:54

关注,很早以前写程序就碰到一样的问题,貌似边界拉伸得有凹角面积属性就会有问题,等高手解答。

xyp1964 发表于 2014-8-11 13:47:19

本帖最后由 xyp1964 于 2014-8-11 13:49 编辑

估计对于特别复杂的填充,只能重建边界后,利用region实体进行相关面域增减处理后求得面积。

edata 发表于 2014-8-12 09:41:51

这个填充不知道是怎么来的是不是非acad的hatch生成,重建的边界有个十字形,一般用hatch命令填充不出这样的边界,重建边界填充是会有面积属性的。
页: [1]
查看完整版本: 如果填充没有面积属性,会出错