明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4825|回复: 15

[讨论] 请问如果获取一个矩形的中心点呢

[复制链接]
发表于 2013-10-14 13:33:26 | 显示全部楼层 |阅读模式
想用ssget选取矩形,然后获得矩形的中心点坐标,以供后续的lisp的编写,请问如果实现矩形中心点坐标的获取呢,没这个群码吧
 楼主| 发表于 2013-10-14 15:19:35 | 显示全部楼层
Andyhon 发表于 2013-10-14 14:58
没这个群码吧
是没这个群码
但两对角的中间点即是

2对角怎么获得? 哪个群码呢请问
回复 支持 0 反对 1

使用道具 举报

发表于 2013-10-14 14:58:56 | 显示全部楼层
没这个群码吧
是没这个群码
但两对角的中间点即是
发表于 2013-10-14 15:33:54 | 显示全部楼层
本帖最后由 819534890 于 2013-10-14 15:39 编辑

(defun get_pline_dp (e );获取矩形顶点
(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget e)))
)
(defun midpoint (p1 p2) (mapcar '(lambda (x y) (/ (+ x y) 2)) p1 p2)) ;两点之间的中点
(defun c:jxzxd()
(princ "请选择矩形:")
(setq ddlb (get_pline_dp (car (entsel))))
(princ "\n矩形的中心点为:\n")
(MidPoint (car ddlb) (caddr ddlb))
)
 楼主| 发表于 2013-10-14 15:43:14 | 显示全部楼层
819534890 发表于 2013-10-14 15:33
(defun get_pline_dp (e );获取矩形顶点
(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) ( ...

谢谢你
发表于 2013-10-15 13:41:09 | 显示全部楼层
可以直接找形心
发表于 2013-10-15 14:23:53 | 显示全部楼层
找形心就可以了
 楼主| 发表于 2013-10-17 13:26:09 | 显示全部楼层
寒林清远 发表于 2013-10-15 13:41
可以直接找形心

谢谢你 怎么个找法呢 用什么函数呢?具体如何实现?
 楼主| 发表于 2013-10-17 13:26:41 | 显示全部楼层
ctclsc 发表于 2013-10-15 14:23
找形心就可以了

谢谢你 怎么个找法呢 用什么函数呢?具体如何实现?
发表于 2013-10-17 16:05:58 | 显示全部楼层
peraperson 发表于 2013-10-17 13:26
谢谢你 怎么个找法呢 用什么函数呢?具体如何实现?

先将矩形转换为面域(命令region),然后求面域的形心:
(vla-get-Centroid (vlax-ename->vla-object 对象图名)),返回形心
然后将获得的形心转为点:(vlax-safearray->list (vlax-variant-value 形心))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 08:55 , Processed in 0.196696 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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