查看单个帖子
旧 2009-04-25, 10:40 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 [求助] 用lisp怎么获取cad中一个块(block)的边界

[求助] 用lisp怎么获取cad中一个块(block)的边界
www.dimcax.com
[求助] 用lisp怎么获取cad中一个块(block)的边界
用lisp获取一个块的图元表之后,图元表里并没有给出很多的信息,只给了一个插入点的坐标,如何才能获取块中的所有点的坐标,或者如何才能获取它的边界,比如左下角的坐标,右上角的坐标,我想了很久,就是没有办法解决,谁知道用什么函数可以实现.请高手指教,小弟谢谢了
d
1、块中所有点的坐标要用entnext函数取得,其坐标值要加上插入点坐标;
2、对象边界可以用boundary命令得到,具体步骤:
a、先取得对象的最小包围框坐标;
b、画一个比最小包围框大的方框;
c、使用boundary命令在画的方框与最小包围框之间一点得到边界(两个);
d、取到这两个边界并判断剔除与画的方框相同的边界。
3、搜下“对象方框”或“最小包围框”
踅摸
d
谢谢楼上的回答,但是我所遇见的问题还是没有解决
我想我还是把问题再细化一下,下面是我写的部分代码,我希望程序自己在模型中找到任意一个块,
然后计算(返回)这个块的边界,在程序运行过程中,不出现人机交互操作,比如选点,选对象什么的.
(setq e (entnext))
(while e
(setq e1 (entget e))
(if (equal '(0 . "insert") (assoc 0 e1)) ;判断实体是否为块,如果是取它的边界
;这部分代码我希望得到e的边界(左下角,右上角),不知道该如何实现
)
(setq e (entnext e)) ;如果实体不是块,那取下一个实体,继续判断
)
d
关注此帖,希望从中学到点东西,帮顶一下。
d
是一个问题。
如果简单用boundingbox,是不能取得完全正确的坐标的
因为有的块经过了不等比,旋转,或者其他三维变换,里面所有物体都获得一个边界边界点,然后要经过矩阵变换,才能得到正确的结果。
不妨参考:
/blog/user1/90/index.asp
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)