几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(AutoLISP) (http://www.dimcax.com/hust/forumdisplay.php?f=178)
-   -   [求助] 用lisp怎么获取cad中一个块(block)的边界 (http://www.dimcax.com/hust/showthread.php?t=10889)

yang686526 2009-04-25 10:40 PM

[求助] 用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


所有的时间均为北京时间。 现在的时间是 09:02 PM.