找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3828|回复: 32

[求助] [求助]:如何计算当前UCS下的实体包围盒?

[复制链接]
发表于 2006-12-24 14:39:09 | 显示全部楼层 |阅读模式

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

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

×
WCS下的实体包围盒有ActiveX方法可以直接获得,但是不能取得当前UCS下的包围盒,有什么办法可以求得当前UCS下的实体包围盒呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 8121个

财富等级: 富甲天下

发表于 2006-12-24 17:02:31 | 显示全部楼层
简单啊,你加入如下代码: (comand "ucs" "w") ;先转化为世界坐标系
(vla-GetBoundingBox obj 'pta 'ptb);;;取得外框后;
(command "ucs" "p") ;;再转化回去啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-25 12:25:12 | 显示全部楼层
嘿嘿,兄弟,那你就想错了。
绝对不是简单的变换坐标系。
不信你做个实验试试看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-25 13:24:00 | 显示全部楼层
是啊,要是那么简单,我就不会问了。有时候遇到UCS的情况,真难处理
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-12-30 18:33:50 | 显示全部楼层
得到一个 ucs -> wcs的矩阵
把图形 transform 到wcs 求轮廓
undo
把点 trans到ucs
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-1 15:43:02 | 显示全部楼层
矩阵我一点都不会,遗憾:(
怎么transform也不会,一直觉得挺难
aeo斑竹能提供点更详细的步骤么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-1 20:09:06 | 显示全部楼层
那是否可以用这么一种代替方法:(只适用于平面情况,可能还得分类)

得到UCS的角度,将物体拷贝一个,绕UCS原点逆向转动到WCS,得到BOUNDINGBOX,画出这个矩形,再转回到UCS,得到其坐标。

这里的文章也讨论这个问题,其中有许多智慧的碰撞,LUIS E,和BOBBY C JONHES等高手都讨论了一番,其中也给出了几个LISP,希望对你有用:)
http://groups.google.com/group/a ... =3#fec0e0b40400618a
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2007-1-2 13:16:43 | 显示全部楼层
多谢snoopychen  ,我会继续学习一下,希望有能力的朋友一起研究这个问题
楼上的程序在2002中不能使用,出错: Automation Error. Key not found
能email一个源程序给我么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-2 18:44:01 | 显示全部楼层
xucsbox,支持选集
求选集ucs下的包围框


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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2007-1-3 13:08:30 | 显示全部楼层
发一个点绕基点旋转的转换函数,用于变换非常方便
楼上的程序少函数xussbox
另外,发现boundingbox方法似乎有时不正确,如附件中的图
[PHP]
;;;a dot product of the two vectors, u & v
(defun dotprod (u v)
  (apply '+ (mapcar '* u v))
)

;;;transpose a matrix
;;;code by doug Wilson
(defun transpose (m)
  (apply 'mapcar (cons 'list m))
)

;;;Apply a transformation matrix to a vector
(defun mxv (m v)
  (mapcar '(lambda (row) (dotprod row v))
          m
  )
)

;;;Multiply two matrices
(defun mxm (m q)
  (setq q (transpose q))
  (mapcar '(lambda (row) (mxv q row))
          m
  )
)

;;;Feed each point of your boundingbox
;;;to the (TransFormBy) function with the appropriate rotation angle in radians
;;;& the rotation basepoint.  The offsetXYZ arg will be '(0 0 0), unless you
;;;want to move the box and the scaleXYZ arg will be '(1 1 1), unless you want
;;;to scale it.
;;;Performs multiple transformations on a point given the Basepoint, Offset,
;;;Scale, and Rotation
;;;This example Rotates the point 5,5,0 90d from the basepoint -1,-1,0
;;;(transformby '(5 5 0) '(-1 -1 0) '(0 0 0) '(1 1 1) (* 0.5 pi))
;;;Returns (-7.0 5.0 0.0)

;;;This example Rotates the point 5,5,0 90d from the basepoint -1,-1,0
;;;AND moves it +10 in the X direction and -6 in the Y direction
;;;(transformby '(5 5 0) '(-1 -1 0) '(10 -6 0) '(1 1 1) (* 0.5 pi))
;;;Returns (3.0 -1.0 0.0)
;;;Bobby C. Jones
(defun TransFormBy (Pnt BasePnt OffsetXYZ scaleXYZ Rot / ScaleX ScaleY
                    ScaleZ Tx Ty Tz ScaleM RotateZM MoveM TransM)
  (mapcar 'set
          '(Scalex ScaleY ScaleZ)
          scaleXYZ)
  (mapcar 'set
          '(Tx Ty Tz)
           (mapcar '+ OffsetXYZ BasePnt)
          )
  (setq scaleM
        (list (list ScaleX 0 0 0)
              (list 0 ScaleY 0 0)
              (list 0 0 ScaleZ 0)
              (list 0 0 0 1)
        )
        RotateZM
        (list (list (cos Rot) (- (sin Rot)) 0 0)
              (list (sin Rot) (cos rot) 0 0)
              (list 0 0 1 0)
              (list 0 0 0 1)
        )
        MoveM
        (list (list 1 0 0 Tx)
              (list 0 1 0 Ty)
              (list 0 0 1 Tz)
              (list 0 0 0 1)
        )
        TransM (mxm MoveM (mxm ScaleM RotateZM))
        pnt (mapcar '- pnt BasePnt)
); _end of Setq
(reverse (cdr (reverse (mxv TransM (append pnt '(1))))))
) ;;defun
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2007-1-4 08:32:23 | 显示全部楼层
试了一下,有时候会有问题,不知道怎么变换的。12楼的附件中的图请测试一下,看什么原因包围盒不正确。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-4 12:11:37 | 显示全部楼层
10楼:
画一个方形三维实体,在透视图中把坐标改为屏幕坐标,得出来的框的UCS不正确,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 19:35 , Processed in 0.259971 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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