(XD::Entity:BOXatECS)获得选择集或实体对齐参考实体ECS下实际的包围盒
;|
获得实体ECS下实际的包围盒
参数:
ss ---实体名 or 选择集
e---参考实体或ecs(确定X轴方向), ecs=(原点 X轴 Y轴 Z轴)
返回值:
对齐一个实体的包围盒(UCS点)
|;
(defun XD::Entity:BOXatECS (ss e / box from mat pj r to xAxis yAxis zAxis)
(if (= (type e) 'ENAME)
(setq from (xdrx_entity_getecs e))
(progn
(setq xAxis e
yAxis (xdrx_vector_perpVector xAxis)
zAxis (xdrx_vector_crossProduct xAxis yAxis)
from (list '(0 0 0) xAxis yAxis zAxis)
)
)
)
(xdrx_document_ucsoff)
(setq box (xdrx_entity_box ss))
(setq pj (car box)
to (list pj '(1 0 0) '(0 1 0) '(0 0 1))
mat (xdrx_matrix_AlignCoordSystem from to)
)
(xdrx_entity_transform ss Mat)
(setq box (xdrx_entity_box ss))
(xdrx_entity_transform ss (setq r (xdrx_matrix_inverse Mat)))
(XD::Pnts:WCS2UCS (XD::Pnts:Transform box r))
)
测试命令代码:
(defun c:ttt ()
(if (and
(setq e (car (xdrx_entsel "\n拾取参考实体确定X轴<退出>:")))
(progn
(princ "\n选取要处理的实体<退出>:")
(setq ss (ssget))
)
)
(progn
(XD::Begin)
(setq box (XD::Pnts:UCS2WCS (XD::Entity:BoxAtEcs ss e)))
(apply
'xdrx_polyline_make
(cons t box)
)
(XD::End)
)
)
(princ)
)
看了下 EntityBox 函数的代码, 能不能不 Transform ss 仅 transform box, 毕竟这个 SS 一般要比 Box 大很多,Box就是 四个点,把四个点缩放和旋转要效率高的多
, {:soso_e101:}
都去研究XDapi啦!!
我也不玩lisp了。
玩看书去。 本帖最后由 Lispboy 于 2013-7-25 19:31 编辑
st788796 发表于 2013-7-25 18:46
看了下 EntityBox 函数的代码, 能不能不 Transform ss 仅 transform box, 毕竟这个 SS 一般要比 Box 大很多 ...
不行的,不同坐标系下,那个盒子大小是不一样的,只变换点,除了要旋转外,还要缩放,平移,这个矩阵不好找出来。
还是让transform ent 来找盒子吧。找到盒子,再给转回去,只旋转变换好实现。
wowan1314 发表于 2013-7-25 19:10
都去研究XDapi啦!!
我也不玩lisp了。
玩看书去。
别啊,你也一起来研究啊,你看书是大家的损失啊。
wowan1314 发表于 2013-7-25 19:10
都去研究XDapi啦!!
我也不玩lisp了。
玩看书去。
api不用研究,想用啥吱一声就有:) Free-Lancer 发表于 2013-7-25 20:08
api不用研究,想用啥吱一声就有
xdapi除了2006版的还有其他说明文件吗 2010版看着好多函数不知道参数表
cre8o 发表于 2013-7-27 01:08
xdapi除了2006版的还有其他说明文件吗 2010版看着好多函数不知道参数表
api 2006版本手册是早年发布的,至少在2005年左右就有了,那个时候是200多个函数, 现在的每个版本的函数都是一样的,700多了吧。新版手册还没有出来,部分函数用法论坛出来了。
newer 发表于 2013-7-27 09:24
api 2006版本手册是早年发布的,至少在2005年左右就有了,那个时候是200多个函数, 现在的每个版本的函数 ...
谢谢 去看看 啥也不说了,感谢楼主分享哇! 这个函数速度很慢,哪个快些? dyjwyqz5221 发表于 2018-7-3 15:26
这个函数速度很慢,哪个快些?
这个矩阵太复杂,太多函数了,看得晕,所以效率低。
其实两步就搞定了
(apply 'xdrx_ucs_set ucs-lst);_设置用户坐标系
(xdrx_entity_box ss)
如果用矩阵解决,高飞鸟的纯Lisp效果不错。
页:
[1]