明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5347|回复: 20

请教:求一个闭合区域的几何中心?

    [复制链接]
发表于 2006-10-25 11:07 | 显示全部楼层 |阅读模式

请教:求一个闭合区域的几何中心?

用pl画的闭合

发表于 2006-10-26 00:02 | 显示全部楼层
(defun c:test ()
  (setq pl_ename (car (entsel "选取一条闭合的多义线:"))
 ss  (ssadd)
  )
  (ssadd pl_ename ss)
  (command "region" ss "")
  (setq regobj (vlax-ename->vla-object (entlast))
 cen_pt (vlax-safearray->list
   (vlax-variant-value (vla-get-Centroid regobj))
        )
  )
  (command "circle" cen_pt 1)
)
发表于 2006-10-26 19:57 | 显示全部楼层

太好了,我也正需要,不过我如果是四条直线绘成的正方形或长方形区域,如何知道它是否闭合,如果不闭合,怎样才能让他闭合?

发表于 2006-10-26 22:13 | 显示全部楼层

可在上面代码中加上一句:

(defun c:test ()
  (setq pl_ename (car (entsel "选取一条闭合的多义线:"))
 ss  (ssadd)
  )
  (if (eq (vla-get-closed (vlax-ename->vla-object pl_ename)) :vlax-false)
    (vla-put-closed (vlax-ename->vla-object pl_ename) t)
  )
  (ssadd pl_ename ss)
  (command "region" ss "")
  (setq regobj (vlax-ename->vla-object (entlast))
 cen_pt (vlax-safearray->list
   (vlax-variant-value (vla-get-Centroid regobj))
        )
  )
  (command "circle" cen_pt 1)
)

发表于 2006-10-29 15:16 | 显示全部楼层
好像不够完好不,应该采用vla-getboundingbox    才更好,上面的对于超过四边形的闭合图形就不行了
发表于 2006-10-29 19:47 | 显示全部楼层
vla-getboundarybox函数得到的是一些图元的最小包围外框的角点,我觉得与几何中心没多大关系.
发表于 2006-10-29 19:52 | 显示全部楼层

另外,上面程序不局限于四边形,它同样适用于超过四边形的多边形!

不过运行之前须关掉捉点功能!

发表于 2006-10-29 20:14 | 显示全部楼层
也许大家的要求不同,我说的是用这个函数求出最在最小的点,根据这两个再求中这个对于什么对像都可以,可能你们所说的几何中心不是这个意思吧,哈哈
发表于 2006-10-30 10:50 | 显示全部楼层
发表于 2006-10-30 19:23 | 显示全部楼层

用(vlax-variant-value (vla-get-Centroid regobj)) 这个方法求出来的只是质心,有可能这个点跑到闭合多边形外面去 ,

 我的意思是求型心,也就是形状的中心,它一定是在多边形的里面

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-28 18:10 , Processed in 0.218916 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表