fuweihua 发表于 2009-3-26 11:07:00

单一求面域形心,,并做标志

<p>第一次发这样的贴,还望支持。</p><p>由于是第一次做,所对步骤比较烦琐,但是方式监视参数。呵呵。</p><p>(defun C:qxx()<br/>&nbsp; (setq en (entsel)) <br/>&nbsp; (setq tma (car en))<br/>&nbsp; (setq tmb (vlax-ename-&gt;vla-object tma))<br/>&nbsp; (setq tmc (vla-get-centroid tmb))<br/>&nbsp; (setq tmd (vlax-variant-value tmc))<br/>&nbsp; (setq tme (vlax-safearray-&gt;list tmd))<br/>&nbsp; (command "point" tme)<br/>&nbsp; (princ "\n形心坐标为:")(princ tme))</p>

李钊伟2012 发表于 2019-1-15 23:09:37

假如需要批量,在前面写个循环,对于每一个多段线,进行后续操作,应该可以吗?

colatree 发表于 2009-6-5 10:40:00

真好用,謝謝!

zhaozwf 发表于 2010-10-21 22:17:00

出错,用不成

iceman8613 发表于 2011-6-14 13:09:07

真不错,好用,谢谢   不会lisp跟少了根腿似的

zhaozwf 发表于 2011-7-2 05:42:22

出错,“选择对象: Error: ActiveX 服务器返回错误: 未知名称: Centroid”

yshf 发表于 2011-7-6 09:18:13

改为如下:(defun C:qxx()
(vl-load-com)
(while (setq en (entsel))
   (setq tma (car en))
   (setq tmb (vlax-ename->vla-object tma))
   (if (vlax-property-available-p tmb 'centroid)
         (progn
             (setq tmc (vla-get-centroid tmb))
             (setq tmd (vlax-variant-value tmc))
             (setq tme (vlax-safearray->list tmd))
             (command "point" tme)
             (princ "\n形心坐标为:")(princ tme)
       )
         (princ "\n所选图元没有形心属性!")
   )
   )
   (princ)
)

cxs259 发表于 2011-9-4 12:58:32

修改后,非常好用!能否把质心标志用十字交叉线标在图形上,谢谢

zyhandw 发表于 2011-9-5 17:38:54

十字交叉线?变一下点样式就行了!
在(vl-load-com)这一行后面加一句(setvar "pdmode" 3)就行了!

cxs259 发表于 2011-9-5 20:50:08

惭愧,谢谢!

梁智泓 发表于 2012-6-10 22:11:03

能求多个多边形,共同的形心吗
页: [1] 2
查看完整版本: 单一求面域形心,,并做标志