为报答大家对明经通道的支持,本站特别与TrueTable共同推出免费注册活动
我用pl线所有顶点坐标相加求x.y平均值的方法求得了中心点,但是在一些比较不规则的形状中,中心点偏移得很多(至少看上去是这样)。哪位帮我看看怎样解决这个问题,我是想在中心点写文字的。利用这个pl生成region, 然后就可以求得region的形心、重心、惯心矩之类的。
怎么不能传图了.....?
本帖最后由 作者 于 2002-9-14 23:55:51 编辑这个
....
怎样求region的形心、重心、惯心矩?
region就有这些属性的。参见
http://www.xdcad.com/forum/showthread.php?s=&threadid=13754参了半天,没参懂....
看来我是的要质心,但是massprop之后,那个质心坐标没办法提出来啊。(看得到,用不了。)有没有什么办法。您不会写程序?
(Command "massprop" regs "" "y" "c:\\00")(SetQ cpfn (Open "c:\\00.mpr" "r"))
(Repeat 7 (Read-Line cpfn))
(SetQ cpfx (Last (Read (StrCat "(" (Read-Line cpfn) ")"))) ;提取质量中心X位置
cpfy (Last (Read (StrCat "(" (Read-Line cpfn) ")"))) ;提取质量中心Y位置
)
(Close cpfn)
这样吧,给你一段代码:
本帖最后由 作者 于 2002-9-16 8:57:51 编辑使用标准的vlisp, centroid是重心,
这种返回值是一个实数数值变体
(vla-get-centroid (vlax-ename->vla-object (car (entsel))))
为了转成list, 用下面的代码:
(vlax-safearray->list
(vlax-variant-value
(vla-get-centroid (vlax-ename->vla-object (car (entsel))))
)
)
这样的代码,显然比较麻烦一点,
在本站的vlisp函数库中,定义了一个 通用的转化成lisp-value的函数,可以简化一点:
(lisp-value (vla-get-centroid (vlax-ename->vla-object (car (entsel)))))