peraperson 发表于 2013-10-14 13:33:26

请问如果获取一个矩形的中心点呢

想用ssget选取矩形,然后获得矩形的中心点坐标,以供后续的lisp的编写,请问如果实现矩形中心点坐标的获取呢,没这个群码吧

peraperson 发表于 2013-10-14 15:19:35

Andyhon 发表于 2013-10-14 14:58 static/image/common/back.gif
没这个群码吧
是没这个群码
但两对角的中间点即是

2对角怎么获得? 哪个群码呢请问

Andyhon 发表于 2013-10-14 14:58:56

没这个群码吧
是没这个群码
但两对角的中间点即是

819534890 发表于 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))
)

peraperson 发表于 2013-10-14 15:43:14

819534890 发表于 2013-10-14 15:33 static/image/common/back.gif
(defun get_pline_dp (e );获取矩形顶点
(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) ( ...

谢谢你

寒林清远 发表于 2013-10-15 13:41:09

可以直接找形心

ctclsc 发表于 2013-10-15 14:23:53

找形心就可以了

peraperson 发表于 2013-10-17 13:26:09

寒林清远 发表于 2013-10-15 13:41 static/image/common/back.gif
可以直接找形心

谢谢你 怎么个找法呢 用什么函数呢?具体如何实现?

peraperson 发表于 2013-10-17 13:26:41

ctclsc 发表于 2013-10-15 14:23 static/image/common/back.gif
找形心就可以了

谢谢你 怎么个找法呢 用什么函数呢?具体如何实现?

819534890 发表于 2013-10-17 16:05:58

peraperson 发表于 2013-10-17 13:26 static/image/common/back.gif
谢谢你 怎么个找法呢 用什么函数呢?具体如何实现?

先将矩形转换为面域(命令region),然后求面域的形心:
(vla-get-Centroid (vlax-ename->vla-object 对象图名)),返回形心
然后将获得的形心转为点:(vlax-safearray->list (vlax-variant-value 形心))
页: [1] 2
查看完整版本: 请问如果获取一个矩形的中心点呢