- UID
- 1
- 积分
- 15891
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-1-3
- 最后登录
- 1970-1-1
|
发表于 2002-10-10 03:25:34
|
显示全部楼层
Re: [求助]:如何对变比例的块中的三维实体进行干涉检查
最初由 i_want_2 发布
[B]如何对变比例的块中的三维实体进行干涉检查 [/B]
给你贴篇资料,看看是否有帮助。
- [FONT=courier new]
- Testing interference of solid in non-uniformly transformed block
- ID 2029
- Applies to: AutoCAD 2000I
- AutoCAD 2002
-
-
- This document is part of Coordinates and Transformations Solids Block Reference Intersecting Entities
- Question
- How can I test whether two solids interfere, if one is in a BLOCK, which has
- a non-uniform transformation.
- Answer
- ACIS doesn't allow non-uniform transformations on the solids. Since its going
- to be ACIS that does the interference detection, this will be a problem,
- assuming that you want to interfere one solid which has the transformation
- and one which does not. If you are testing two block references which both
- have the same transformation, then one can simply test the contents of the
- block without applying the transformation.
- An alternative approach would be to facet the solids, transform the facets,
- and test these. There are various techniques for extracting facets listed
- elsewhere, for example using the ACRE functions, or calling the worldDraw
- function of the solid. The disadvantage to this approach is that you have to write
- the code to check the facet interference, and the result would only be to a
- certain tolerance.
- Testing whether two facets interfere is fairly straightforward, assuming the
- facets are triangular. If the two triangles are coplanar, then just test
- whether any of the line segments intersect, and if not, whether either
- triangle lies wholly inside the other. If they are not coplanar, then take
- each edge of the facet and calculate whether it intersects the plane of the
- other triangle. If it does, check whether the intersection point lies within
- the triangle.
- Finally, if you know that the facetted models do not interfere, you'll need
- to check whether one solid is contained entirely within the other. To do
- this, take any point on one of the solids, transform this point with the
- transform of its block references. Then transform the point with the inverse
- of the transformation of the block references of the other solid ( to get it
- back into the space of the other solid ). Then test whether it lies inside
- the solid ( using the B-Rep API point containment function ). You'll have to
- do this both ways round of course.
- [/FONT]
|
|