找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2903|回复: 14

[实体] (XD::Entity:Box)获得对齐UCS的实体或者选择集的包围盒

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-7-2 00:09:00 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Entity:Box
调用格式: ( XD::Entity:Box e or ss)
参数说明: e-- 实体名

ss--- 选择集
返回值: 对齐当前UCS的实体选择集包围盒
函数简介: 对齐当前UCS的实体选择集包围盒
函数来源: 原创
函数作者: lispboy
适用版本: XDRX API 
最后更新时间: 2013-07-02
备注: 请下载最新的XDRX_API和晓东通用LISP函数库
演示图片: -

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

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

×
QQ截图20130702000515.png

  1. ;|
  2. 获得实体或者选择集在UCS下的实际包围盒
  3. 参数:
  4.    ss --- 实体名 or 选择集

  5. 返回UCS下的对齐X轴的包围盒(UCS点)
  6. |;
  7. (defun XD::Entity:Box (ss / an box from mat mat0 pj r to)
  8.   (xdrx_document_ucsoff)
  9.   (setq box (xdrx_entity_box ss))
  10.   (if (not (xdrx_document_iswcs))
  11.     (progn
  12.       (setq an (XD::UCS:Angle)
  13.             pj (car box)
  14.             mat0 (xdrx_matrix_identity 3)
  15.             from (list pj (getvar "ucsxdir") (getvar "ucsydir") (XD::UCS:ZDir))
  16.             to (list pj '(1 0 0) '(0 1 0) '(0 0 1))
  17.             mat (xdrx_matrix_AlignCoordSystem from to)
  18.       )
  19.       (xdrx_entity_transform ss Mat)
  20.       (setq box (xdrx_entity_box ss))
  21.       (xdrx_entity_transform ss (setq r (xdrx_matrix_inverse Mat)))
  22.       (setq box (XD::Pnts:WCS2UCS (XD::Pnts:Transform box r)))
  23.     )
  24.   )
  25.   box
  26. )

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

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2013-7-2 08:00:15 | 显示全部楼层
再这么下去 又一个院长诞生了

点评

这些还都是在打基础,没有到具体应用地步  详情 回复 发表于 2013-7-2 08:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-2 08:07:31 | 显示全部楼层
守仁格竹GM 发表于 2013-7-2 08:00
再这么下去 又一个院长诞生了

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

使用道具 举报

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-7-25 18:27:25 | 显示全部楼层
代码2013.07.25 更新。

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-25 18:49:02 | 显示全部楼层
Lispboy 发表于 2013-7-25 18:27
代码2013.07.25 更新。

把 transform ss 换成仅 transform box 就可以收关了

点评

最后是BOX收关啊 (setq box (XD:nts:Transform box r)) 你上面看到的是实体的变换,要先变换下实体求得BOX,再转回去。  详情 回复 发表于 2013-7-25 19:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-7-25 19:20:09 | 显示全部楼层
st788796 发表于 2013-7-25 18:49
把 transform ss 换成仅 transform box 就可以收关了

最后是BOX收关啊

(setq box (XD::Pnts:Transform box r))


你上面看到的是实体的变换,要先变换下实体求得BOX,再转回去。

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 396个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2016-5-8 00:22:46 | 显示全部楼层
本帖最后由 csharp 于 2016-5-8 00:50 编辑

函数有 Bug

命令: (apply 'command (cons "_pline" (xd::entity:box (ssget))))

命令: (xd::ucs:angle)
0.699088
修改如下:

  1. (defun xd::entity:box (ss / pts)
  2.   (if (xdrx_document_iswcs)
  3.     (xdrx_entity_box ss t)
  4.     (progn
  5.       (xdrx_document_ucsoff)
  6.       (xdrx_entity_transform ss (xdrx_matrix_wcs2ucs))
  7.       (setq pts (xdrx_entity_box ss t))
  8.       (xdrx_entity_transform ss (xdrx_matrix_ucs2wcs))
  9.       (xd::pnts:wcs2ucs
  10.         (xdrx_points_transform pts (xdrx_matrix_ucs2wcs))
  11.       )
  12.     )
  13.   )
  14. )
20160508001720.jpg

点评

xdrx_entity_box 直接就能返回UCS下的包围盒子。 [attachimg]53135[/attachimg]  详情 回复 发表于 2016-5-8 02:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-5-8 02:20:10 | 显示全部楼层
本帖最后由 newer 于 2016-5-8 02:23 编辑
csharp 发表于 2016-5-8 00:22
函数有 Bug

命令: (apply 'command (cons "_pline" (xd::entity:box (ssget))))

xdrx_entity_box  直接就能返回UCS下的包围盒子。

搜狗截图20160508021859.png

点评

我理解错了,xdrx_entity_box 是返回当前 UCS 下的包围盒(WCS坐标),不过这个 Lisp 函数是不对的 绿线 命令: (apply 'xdrx_polyline_make (xd::entity:box (ssget))) 选择对象: 指定对角点: 找到 1 个 选  详情 回复 发表于 2016-5-8 07:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2016-5-8 07:34:40 | 显示全部楼层
本帖最后由 csharp 于 2016-5-8 07:37 编辑
newer 发表于 2016-5-8 02:20
xdrx_entity_box  直接就能返回UCS下的包围盒子。

我理解错了,xdrx_entity_box 是返回当前 UCS 下的包围盒(WCS坐标),不过这个 Lisp 函数是不对的
红线
命令: (apply 'xdrx_polyline_make (xd::entity:box (ssget)))

选择对象: 指定对角点: 找到 1 个

选择对象:
<图元名: 7ef036c8>
绿线

命令: (apply 'xdrx_polyline_make (xdrx_entity_box (ssget)))

选择对象: 指定对角点: 找到 1 个

选择对象:
<图元名: 7ef036d0>
20160508001720.jpg
20160508072821.jpg

点评

我看了下一楼的代码,可能是当时的XDRX_ENTITY_BOX不能返回UCS下的,所以写的这个函数,里面用了 (setq box (xdrx_entity_box ss)) 所以现在就可能错了,现在来说如果参数后面加T也许就对了。  详情 回复 发表于 2016-5-8 13:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-5-8 13:59:24 | 显示全部楼层
csharp 发表于 2016-5-8 07:34
我理解错了,xdrx_entity_box 是返回当前 UCS 下的包围盒(WCS坐标),不过这个 Lisp 函数是不对的
红线
...

我看了下一楼的代码,可能是当时的XDRX_ENTITY_BOX不能返回UCS下的,所以写的这个函数,里面用了
(setq box (xdrx_entity_box ss))


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 09:01 , Processed in 0.302117 second(s), 74 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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