找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 911|回复: 7

[求助] [求助]:如何获取矩形的长宽和中心坐标?

[复制链接]
发表于 2006-3-17 09:50:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何获取矩形的长宽和中心坐标?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 8157个

财富等级: 富甲天下

发表于 2006-3-17 10:42:30 | 显示全部楼层
(defun c:test ()
   (cond
    ((not (setq ss (ssget ":S" '((0 . "LWPolyline"))))))
    (T
     (setq ee (ssname ss 0))
     (setq pts (acet-geom-extents ee)
           Pur (cadr pts)
           Pll (car pts)
           Px9 (car Pur)
           Px0 (car Pll)
           Py9 (cadr Pur)
           Py0 (cadr Pll)
           pt5 (list (/ (+ Px9 Px0) 2) (/ (+ Py9 Py0) 2))
           Dxx (- Px9 Px0)
           Dyy (- Py9 Py0)
      )
      (princ "\nLength: ") (princ Dxx)
      (princ "\n Width: ") (princ Dyy)
      (princ "\n中间点: ") (princ pt5)
    ))
    (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-17 10:55:08 | 显示全部楼层
程序不完全正确,我估计程序中用到了vla-GetBoundingBox ,当矩形倾斜时,得到的长宽就不正确了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-17 10:58:46 | 显示全部楼层
非常谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-17 11:22:58 | 显示全部楼层
改了一下
[php]
(defun c:test (/ ent obj lst p1 p2 p3 a b cen-point)
  (princ "\n本程序功能:求矩形的长宽和中心坐标!")
  (if (setq ent (car (entsel "\n选择一个矩形:")))
    (progn
      (setq obj (vlax-ename->vla-object ent))
      (setq lst (vlax-get obj 'Coordinates))
      (setq p1 (list (nth 0 lst) (nth 1 lst))
            p2 (list (nth 2 lst) (nth 3 lst))
            p3 (list (nth 4 lst) (nth 5 lst))
      )
      (setq a (distance p1 p2)
            b (distance p2 p3)
      )
      (setq cen-point (mapcar '(lambda (x y) (/ (+ x y) 2.0)) p1 p3))
      (princ "\n矩形长度=")
      (princ a)
      (princ "\n矩形宽度=")
      (princ b)
      (princ "\n中心点坐标为:")
      (princ cen-point)
      
    )
  )
  (princ)
)

[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-17 12:05:10 | 显示全部楼层
如果反过来,把N个矩形获取的数据存为TXT文件,
a  b  cen-pointx cen-pointy
10 20 -10 15.25
15 25 -60 100.5
....
再根据TXT文件生成矩形,如何做?

(defun c:test        ()
  (setvar "osmode" 0)
  (setvar "pdmode" 34)
  (setq ffn (getfiled "选取文件" "" "txt" 2))
  (setq ff (open ffn "r"))
  (read-line ff)
  (while (setq data (read-line ff))
    (setq data (read (strcat "(" data ")")))
    (command "_.rectang" .......)   ;;;这一步该怎么写?
  )
  (close ff)
  (princ)
  (command "zoom" "Extents")
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-17 13:07:40 | 显示全部楼层
修改了一下:
[php]
(defun c:test (/ os ffn ff data a b cen-point p1 p2)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  ;;(setvar "pdmode" 34)
  (setq ffn (getfiled "选取文件" "" "txt" 2))
  (setq ff (open ffn "r"))
  (read-line ff)
  (while (setq data (read-line ff))
    (setq data (read (strcat "(" data ")")))
    (setq a            (nth 0 data)
          b            (nth 1 data)
          cen-point (list (nth 2 data) (nth 3 data))
    )
    (setq p1 (list (- (car cen-point) (* a 0.5))
                   (- (cadr cen-point) (* b 0.5))
             )
          p2 (list (+ (car cen-point) (* a 0.5))
                   (+ (cadr cen-point) (* b 0.5))
             )
    )
    (command "_.rectang" p1 p2)
;;;这一步该怎么写?
  )
  (close ff)
  (setvar "osmode" os)
  (command "zoom" "Extents")
  (princ)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-17 13:53:45 | 显示全部楼层
学习中,非常谢谢ljpnb~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-29 04:19 , Processed in 0.187945 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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