找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 小菜

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

[复制链接]
发表于 2007-1-4 13:36:04 | 显示全部楼层
to 14 楼:
这是因为你的图是块,一个块就像一个字那样,把包围块的最小矩形外框作为实体边界(方向同块插入角),而不是块内实体的外边作为边界.如下图:  (今天图发了几次都发不上)
解决的办法是炸开.(这一步是可以用程序处理的)
to 15 楼:
如果ucs和wcs平行应该没有问题. 3d的ucs下是有点问题,在查原因.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-4 14:34:20 | 显示全部楼层
谢楼上,我原先对包围盒的计算方法不是太清楚。
15楼能不能做个图发上来啊?我不会搞三维的图形
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-4 23:45:42 | 显示全部楼层
这是在屏幕坐标下得出的包围框,其实外围尺寸是正确的,可能是在转换矩阵时出错了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2007-1-31 09:15:30 | 显示全部楼层
最简单的方法
是不是先绕WCS的原点旋转为角度为0
得到外包框
再反向转回去
重新得到外包框的顶点
以上说的只是2d的在WCS的情况

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

使用道具 举报

发表于 2007-1-31 12:33:39 | 显示全部楼层
其实最科学合理的方法就是矩阵转换,因为acad的运用最本质的东西就是矩阵转换,学点矩阵的知识,逆矩阵,矩阵位移,矩阵旋转。。,晓东函数里就有很多这样的做好的函数,你可以打印其说明,也可以在网上找到关于矩阵的autolsp,相互验证。,其实矩阵作用在点上,就可以把点在不同坐标下变换,作用到实体上,就会对实体变换。把包围盒作为实体,试一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2007-1-31 13:09:19 | 显示全部楼层

  1. (defun c:tt (/ mat tf e obj bp up box)
  2.   (if (and (zerop (getvar "worlducs"))
  3.            (= (getvar "ucsname") "")
  4.       )
  5.     (progn
  6.       (command ".ucs" "s" "$tmp")
  7.       (setq
  8.         mat
  9.          (vla-getucsmatrix
  10.            (vla-get-activeucs
  11.              (vla-get-activedocument (vlax-get-acad-object))
  12.            )
  13.          )
  14.         mat0 (xdl-mat-inverse
  15.                (safearray-value
  16.                  (variant-value mat)
  17.                )
  18.              )
  19.          tf
  20.         t
  21.       )
  22.     )
  23.   )
  24.   (if (setq e (car (entsel)))
  25.     (progn
  26.       (setq obj (vlax-ename->vla-object e))
  27.       (vla-transformby obj (vlax-tmatrix mat0))
  28.       (setq box        (vla-getboundingbox obj 'bp 'up)
  29.             bp        (safearray-value bp)
  30.             up        (safearray-value up)
  31.       )
  32.       (command "rectang" bp up)
  33.      (vla-transformby obj mat)
  34.     )
  35.   )
  36.   (if tf
  37.     (command ".ucs" "d" "$tmp")
  38.   )
  39.   (princ)
  40. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

 楼主| 发表于 2007-1-31 16:16:39 | 显示全部楼层
bp、up是obj变换到WCS下的包围盒对角点,用的是WCS坐标,因此需要在WCS下生成矩形,再变换到当前UCS,对该矩形在当前UCS下的四个顶点求点表包围盒,才能得到结果。其实矩形也可以不生成的,直接将四个顶点按mat进行矩阵变换就行了,这样程序中的两个command命令也不需要了
(= (getvar "ucsname") "")这一句多余的吧?如果有名字就不行么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-31 17:05:42 | 显示全部楼层
小菜说的 其实是WCS下 转过一定角度的实体的外包框
所以俺说 通过矩阵来转换不如用旋转命令转两次来得简单易懂

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2007-1-31 18:50:31 | 显示全部楼层
在WCS下倾斜矩形进行 GetBoundingBox 后如图所示,当将 UCS 设置为矩形的两条边时,此时需要的 Box 应该为矩形本身,上面狂刀的演示动画已经显示的很清楚。
如果仅是UCS->WCS转换并求 BOX ,将得到和图示一样的结果而不是“UCS下的BOX"

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

使用道具 举报

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

使用道具 举报

发表于 2007-1-31 22:17:53 | 显示全部楼层
像这样的,如果矩形是正放的,点1到点9可以用外包框求出来
如果矩形不是正放的,可否也能用外包框求到9个点,而不是求矩形的顶点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 19:25 , Processed in 0.202906 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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