iCAx开思网

标题: NXOpen C++的API有很多问题吗 [打印本页]

作者: nobody007    时间: 2012-6-21 22:09
标题: NXOpen C++的API有很多问题吗
  1. Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));

  2.         vector<Face *> faces = theBody->GetFaces(); // 这一行出错
  3.        
复制代码
GetFaces()是API说明里面的Body类的函数,用来得到body的所有Face
结果这一步就出错,以前也试过它的GetFeatures()函数,一样会出错
这是有啥问题吗?
我在网上能找到的所有代码几乎都是这么写的,为啥我就是不能用这个函数?


作者: kiddult    时间: 2012-6-22 14:21
相同问题,我这里是堆栈错误,个人猜测是body需要过滤掉一些,就是不清楚过滤哪些
一些机器上出的错是heap corrupted
作者: nobody007    时间: 2012-6-22 15:56
kiddult 发表于 2012-6-22 14:21
相同问题,我这里是堆栈错误,个人猜测是body需要过滤掉一些,就是不清楚过滤哪些
一些机器上出的错 ...

堆栈错误和heap corruption我都碰到过,不过经过调试发现是自定义类释放资源问题.
但是这个写在手册上的函数却发生这种不能使用的问题真是操蛋,那我们怎么使用呢?
有些c++"号称"能干的事儿open c是干不了的.
作者: zhangcanwei    时间: 2012-6-24 17:45
我没用过这个API函数,都是用NXOPEN函数来代替。
在NXOPEN中,是这样处理的,首先将特征转换为具体的形式,比如如果是拉伸特征,就要强制转换为extrode类型,然后,再调用extrode类中的getfaces函数,得到具体的face
作者: kiddult    时间: 2012-6-25 09:07
nobody007 发表于 2012-6-22 15:56
堆栈错误和heap corruption我都碰到过,不过经过调试发现是自定义类释放资源问题.
但是这个写在手册上的函 ...

其实也不是干不了,就是有限制可能
作者: tuxiaoguang    时间: 2012-6-26 18:47
不懂  都是高手啊
作者: jackie2003    时间: 2012-6-28 15:48
1.检查是否添加了预编译选项_secure_scl=0,如果你用的是vs2008或更高版本。
2.确定 theBody 非空,就是类型不错

作者: kiddult    时间: 2012-7-3 10:39
jackie2003 发表于 2012-6-28 15:48
1.检查是否添加了预编译选项_secure_scl=0,如果你用的是vs2008或更高版本。
2.确定 theBody 非空,就是类 ...

我的即使加了预编译选项_secure_scl=0,用的时候还是会出下面这个错

HEAP[ugraf.exe]: Invalid Address specified to RtlFreeHeap( 08450000, 0E1EC1E0 )
Windows 已在 ugraf.exe 中触发一个断点。

其原因可能是堆被损坏,这说明 ugraf.exe 中或它所加载的任何 DLL 中有 Bug。

原因也可能是用户在 ugraf.exe 具有焦点时按下了 F12。

输出窗口可能提供了更多诊断信息。
线程 'RPC 回调线程' (0xc80) 已退出,返回值为 0 (0x0)。
作者: jackie2003    时间: 2012-7-5 09:27
kiddult 发表于 2012-7-3 10:39
我的即使加了预编译选项_secure_scl=0,用的时候还是会出下面这个错

HEAP: Invalid Address specif ...

可以给一个最简单完整的应用程序代码么
我测试一下
还有,你是不是用NX提供的template创建的工程,一般情况下推荐使用ugopen/vs_files里面提供的模板。
作者: kiddult    时间: 2012-7-7 19:54
本帖最后由 kiddult 于 2012-7-7 20:17 编辑

jackie2003 发表于 2012-7-5 09:27
可以给一个最简单完整的应用程序代码么
我测试一下
还有,你是不是用NX提供的template创建的工程,一般 ...

用的是模板,不过在里面添了MFC

[attach]1136604[/attach]

作者: jackie2003    时间: 2012-7-10 16:58
kiddult 发表于 2012-7-7 19:54
jackie2003 发表于 2012-7-5 09:27

用的是模板,不过在里面添了MFC

我测试过了你的代码,应该是STL容器析构的时候出的问题,可能和什么地方的设置有关系,我没有找到。

将你所有的NXOpen代码放在由NXTemplate生成的框架里面是可以正常运行的,由此,可以认为和NXOpen没有什么关系。
作者: kiddult    时间: 2012-7-13 10:31
jackie2003 发表于 2012-7-10 16:58
我测试过了你的代码,应该是STL容器析构的时候出的问题,可能和什么地方的设置有关系,我没有找到。

将 ...

应该是这个问题了,只加入UG的东西确实不会出错

以前的代码都混杂了MFC的东西,相信都头晕了
作者: nobody007    时间: 2012-9-19 18:40
jackie2003 发表于 2012-6-28 15:48
1.检查是否添加了预编译选项_secure_scl=0,如果你用的是vs2008或更高版本。
2.确定 theBody 非空,就是类 ...

非常感谢,经过GTAC搜索,发现时_secure_scl=0这个问题,已经解决了.我的环境是VS2008+NX7.5
今天才看到你的回复,真的很感谢
作者: tang80634907    时间: 2012-10-2 14:12
对于这个问题  楼主最终是怎么解决的哦  _secure_scl是要加上去  还是删掉啊 ~~
作者: lxf999999    时间: 2012-10-14 16:30
我也试一试




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3