iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 25818|回复: 13
打印 上一主题 下一主题

求助:关于一个point3 是否在一个已知face上

[复制链接]
跳转到指定楼层
楼主
发表于 2008-12-2 20:51:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册登录,享用更多网站功能!

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

x
各位大侠:

我是NXOPEN 的新手,目前遇到一个问题,已经卡住很久了。

我从X3D 文件里提取出来一个面的描述(一连串的点的坐标: 比如point="-4.325 -1.394 0.974, -4.325 -0.146 1.694, -4.35 -0.139 1.669, -4.35 -1.376 0.955"), 我把这个坐标存在了一个link list (point3List)里, 并试图用这些坐标来确认一个part中的face。我用
void evaluateClosestPoint (
const Point3 & reference_point,
double * parameter,
Point3 * closest_point ) const;

来获取一个面上离已知的点最近的点closest_point,然后用这个点再和那个已知点来比较,
bool isEqual (
const Point3 & point,
double tolerance ) const


如果这两个点相同,那么在处理link list里的下一个点。如果坐标中所有点都在这个面上,那么理论上这两个面就印证了。 可是事实上却不工作。


哪位大侠知道更好的函数来解决这个问题呢?也许我用的函数不对,或者太繁琐?我的代码如下:

       // check if this point on any face
        UgIterator < UgFace > curFace;
        while ( !curFace.isFinished ( ) )
        {
                // point3List 是个link list,含有X3D文档中提取的用来描述一个面的坐标。
                point3ListIt = point3List->begin();

                while( point3ListIt != point3List->end() )
                {
                        Point3 *closestPoint = new Point3( );
                        (*curFace)->evaluateClosestPoint ( *point3ListIt, &parameter_u, &parameter_v, closestPoint);

                        // once found the matching face, check the next point
                        if ( closestPoint->isEqual( *point3ListIt, 0.0000001f) == true)
                        {
                                cout<< "current point is equal" << endl;
                                bMatched = true;
                                point3ListIt++;
                        }

                        // else try next face in the part then
                        else
                        {
                                cout<< "current point is not equal" << endl;
                                point3ListIt = point3List->begin();
                                bMatched = false;
                                break;
                        }
                }

                // if all points in this array(Face) matching with this face, the two faces are matching
                if(point3ListIt == point3List->end() && bMatched == true)
                {
                        // Get the name of the matching face
                        faceName = (*curFace)->getName ( );
                        return faceName;
                }
                else
                {
                        curFace.findNext( );
                }
        }

SOS!!!!!!!!!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 支持支持
沙发
 楼主| 发表于 2008-12-2 20:53:47 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
板凳
发表于 2008-12-3 08:00:35 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
地板
 楼主| 发表于 2008-12-3 16:27:07 | 只看该作者

回复 3楼 dianzi24 的帖子

马上注册登录,享用更多网站功能!

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

x
5
发表于 2008-12-3 17:03:32 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
6
发表于 2008-12-3 23:27:38 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
7
 楼主| 发表于 2008-12-16 01:12:30 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
8
发表于 2008-12-16 08:19:19 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
9
发表于 2008-12-17 10:38:20 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
10
 楼主| 发表于 2008-12-18 16:00:34 | 只看该作者

回复 9楼 jackie2003 的帖子

马上注册登录,享用更多网站功能!

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

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

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-11-28 22:25 , Processed in 0.015623 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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