找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2593|回复: 24

[研讨] 再论选择集的与UCS平齐的包围盒

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-19 20:41:00 | 显示全部楼层 |阅读模式

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

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

×
包围盒在CAD编程中的应用很广,很多的几何特性都需要用到它。我们再讨论讨论选择集对 任意 X轴 对齐的包围盒的求法。

QQ截图20141219203914.png

评分

参与人数 1D豆 +5 收起 理由
yularna + 5 出题引导交流奖!向newer版主学习!

查看全部评分

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-19 20:47:31 | 显示全部楼层
ARX 的 getGeomExtents 是返回 WCS coordinates,所以在 UCS 下的 BOX 只能把 Entity 变换到 平齐 UCS 再求   getGeomExtents

点评

赶脚说反了,ARX求的是WCS,你把实体变换到UCS,再求的盒子不还是WCS下的吗?  详情 回复 发表于 2014-12-19 20:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-12-19 20:57:24 | 显示全部楼层
st788796 发表于 2014-12-19 20:47
ARX 的 getGeomExtents 是返回 WCS coordinates,所以在 UCS 下的 BOX 只能把 Entity 变换到 平齐 UCS 再求 ...

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-19 21:00:31 | 显示全部楼层
newer 发表于 2014-12-19 20:57
赶脚说反了,ARX求的是WCS,你把实体变换到UCS,再求的盒子不还是WCS下的吗?

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-12-19 21:36:59 来自手机 | 显示全部楼层
N版要求什么盒子,是不是高飞那个"超级拷贝"中的选择集包围盒?

点评

就是在任意坐标系下,给一个向量,得到对齐那个向量的盒子,看下图: [attachimg]12261[/attachimg] 如果不给品红向量,就得到对齐当前UCS的盒子,白色的, 如果给品红向量,就得到当前UCS下,对齐品红向  详情 回复 发表于 2014-12-19 23:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-12-19 23:16:20 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-12-19 21:36
N版要求什么盒子,是不是高飞那个"超级拷贝"中的选择集包围盒?

就是在任意坐标系下,给一个向量,得到对齐那个向量的盒子,看下图:

QQ截图20141219231551.png


如果不给品红向量,就得到对齐当前UCS的盒子,白色的,

如果给品红向量,就得到当前UCS下,对齐品红向量的盒子,品红的那个。

点评

必须要做的两件事:1.旋转物体后计算包围盒2.对所求的包围盒进行坐标矩阵换算  详情 回复 发表于 2014-12-19 23:30
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-12-19 23:30:57 | 显示全部楼层
newer 发表于 2014-12-19 23:16
就是在任意坐标系下,给一个向量,得到对齐那个向量的盒子,看下图:

必须要做的两件事:1.旋转物体后计算包围盒2.对所求的包围盒进行坐标矩阵换算

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-19 23:32:19 | 显示全部楼层
newer 发表于 2014-12-19 23:16
就是在任意坐标系下,给一个向量,得到对齐那个向量的盒子,看下图:

  1. (defun _Entity:UcsBox (ss / box mat _mat)
  2.   (if (= (getvar "worlducs") 1)
  3.     (xdrx_entity_box ss)
  4.     (progn
  5.       (setq mat         (xdrx_matrix_ucs2wcs)
  6.             _mat (xdrx_matrix_inverse mat)
  7.       )
  8.       (xdrx_entity_transform ss _mat)
  9.       (setq box        (xdrx_entity_box ss)
  10.             box        (xdrx_points_transform box mat)
  11.       )
  12.       (xdrx_entity_transform ss mat)
  13.       box
  14.     )
  15.   )
  16. )

测试
  1. (defun c:tt ()
  2.   (apply 'xdrx_polyline_make
  3.          (cons t (_entity:ucsbox (ssget)))
  4.   )
  5. )

点评

(xdrx_polyline_make pts t) 现在已经不需要apply 了。  详情 回复 发表于 2014-12-19 23:40
代码还需修改,测试图形,图中那个蓝的,是你的代码生成的,没对齐UCS [attachimg]12262[/attachimg] 另外,加个向量参数, 如果给向量,就对齐那个向量。  详情 回复 发表于 2014-12-19 23:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-12-19 23:37:55 | 显示全部楼层

代码还需修改,测试图形,图中那个蓝的,是你的代码生成的,没对齐UCS

QQ截图20141219233714.png

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-12-19 23:39:12 | 显示全部楼层
牢固 发表于 2014-12-19 23:30
必须要做的两件事:1.旋转物体后计算包围盒2.对所求的包围盒进行坐标矩阵换算

G版给写个。

点评

用Api写,用不了几行代码!还是大家来练练手吧  详情 回复 发表于 2014-12-19 23:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-12-19 23:40:23 | 显示全部楼层

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-19 23:40:28 | 显示全部楼层
newer 发表于 2014-12-19 23:37
代码还需修改,测试图形,图中那个蓝的,是你的代码生成的,没对齐UCS

你是要在 Ucs 下再给 xdir 求 Box 吧!

点评

任意坐标系了,给向量对齐向量,不给向量,对齐UCS X轴。  详情 回复 发表于 2014-12-19 23:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-12-19 23:43:26 | 显示全部楼层
st788796 发表于 2014-12-19 23:40
你是要在 Ucs 下再给 xdir 求 Box 吧!

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-12-19 23:46:34 | 显示全部楼层

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-20 00:06:04 | 显示全部楼层
牢固 发表于 2014-12-19 23:46
用Api写,用不了几行代码!还是大家来练练手吧

我这个是不是整复杂了?
  1. (defun _Entity:UcsBox (ss xdir / box mat _mat sys ydir)
  2.   (if xdir
  3.     (setq mat  (xdrx_matrix_ucs2wcs)
  4.           sys  (xdrx_matrix_getcoordsystem mat)
  5.           ydir (xdrx_vector_perpvector xdir)
  6.           _mat (xdrx_matrix_aligncoordsystem
  7.                  sys
  8.                  (list '(0.0 0.0 0.0)
  9.                        (xdrx_vector_normalize xdir)
  10.                        ydir
  11.                        (xdrx_vector_crossproduct xdir ydir)
  12.                  )
  13.                )
  14.           rmat (xdrx_matrix_inverse _mat)
  15.     )
  16.   )
  17.   (cond
  18.     ((and (= (getvar "worlducs") 1)
  19.           (not xdir)
  20.      )
  21.      (xdrx_entity_box ss)
  22.     )
  23.     ((and (not xdir) (zerop (getvar "worlducs")))
  24.      (setq mat        (xdrx_matrix_ucs2wcs)
  25.            _mat        (xdrx_matrix_inverse mat)
  26.      )
  27.      (xdrx_entity_transform ss _mat)
  28.      (setq box (xdrx_entity_box ss)
  29.            box (xdrx_points_transform box mat)
  30.      )
  31.      (xdrx_entity_transform ss mat)
  32.      box
  33.     )
  34.     (t
  35.      (xdrx_entity_transform ss _mat)
  36.      (setq box (xdrx_entity_box ss)
  37.            box (xdrx_points_transform box rmat)
  38.      )
  39.      (xdrx_entity_transform ss rmat)
  40.      box
  41.     )
  42.   )
  43. )
  44. (defun c:tt (/ p1 p2 vec ss)
  45.   (and (setq p1 (getpoint "\nFirst Point: "))
  46.        (setq p2 (getpoint p1 "\nSecond Point: "))
  47.   )
  48.   (if p1
  49.     (setq vec (mapcar '- (trans p2 1 0) (trans p1 1 0)))
  50.   )
  51.   (if (setq ss (ssget))
  52.     (if        vec
  53.       (xdrx_polyline_make
  54.         (_entity:ucsbox ss vec)
  55.         t
  56.       )
  57.     )
  58.     (xdrx_polyline_make
  59.       (_entity:ucsbox ss nil)
  60.       t
  61.     )
  62.   )
  63.   (princ)
  64. )

点评

测试了你的这个代码,和上面的一样啊,不给XDIR,还是下面那个蓝色的盒子。 [attachimg]12263[/attachimg] 给下面那个品红的向量,出来的是黄色的盒子。 [attachimg]12264[/attachimg]  详情 回复 发表于 2014-12-20 00:16
可以再简化, xdrx_matrix_align or XD::Matrix:Align  详情 回复 发表于 2014-12-20 00:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 09:13 , Processed in 0.207531 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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