找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 23729|回复: 16
打印 上一主题 下一主题

用NXOPEN在 .net上开发的例子(C++ 版)

[复制链接]
跳转到指定楼层
1
发表于 2005-6-23 21:51:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

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

x
前几天发了一个用NXOPEN在.net上做的C#的例子,(有兴趣者可以参考https://www.icax.org/viewthread. ... %3D1&page=#pid=)。但是鉴于C#很多人还不是很熟悉,以及很多XDJM们对与C++的愚忠(包括偶),所以偶又做了一个用NXOPEN在.net上用C++开发的例子。大家可以与以前在MFC上的用UGOPEN的例子比较一下,你就可以看到它简单了很多,相信你会喜欢上这种新的开发的方式,(代码请下载附件)。废话少说, here we go:
  
第一步,在.net中建立一个C++的project:
             选择win32下的win32 project,请注意在 application setting的application type中选择dll
  
第二步, 给project作一些必要的设置:
  设置project property 中的
  C/C++->general->Addtional Include Directories:
  Linker->general->Addtional Include Directories
到你的UGOPEN目录。改目录下的NXOPEN字目录中有NXOPEN的需要的头文件
  
将libugopenint.lib和libnxopencpp.lib加入到 Linker->input->Addtional Dependencies中,这两个lib文件在UGOPEN目录下可以找到,
              
         
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2005-6-23 21:57:37 | 只看该作者
第三步,添加你的对话框和call-back函数
       偶是加在对话框的button-click的消息响应函数中的。这一步不会,请自己找资料学习。
  
第四步:
     添加必要的 .hxx头文件,添加UG的入口函数 ufusr和ufusr_ask_unload,呵呵,是不是看到这两个函数觉得特别的亲切。在ufusr中直接调用你的对话框或者函数(UF_initialize之类的东东就不用写了),在ufusr_ask_unload中返回值与以前UF的有些不同,意思也是大概一样的。
  
extern "C" DllExport int ufusr_ask_unload()
{
   return (int)SessionibraryUnloadOptionImmediately;
}
  
extern "C" DllExport void ufusr(char *param, int *retcod, int param_len)
{
   
     //main user interface
     Ctestdlg mydlg;
     mydlg.DoModal();
}
3
发表于 2005-6-24 08:43:20 | 只看该作者
第五步,在button-click的消息响应函数create出feature
        这一步的具体步骤和C#中完全一样的,大家也可以对比一下C++和C#NXOPEN的函数差异有多大。你可以看到基本上流程和函数都是一样的:
       1。 先得到UG的session和workpart
       2。 create feature builder
       3。 set feature builder data
       4。 commit feature。
  
void CtestdlgnBnClickedButton1()
{
     // TODO: Add your control notification handler code here
      
     //get ug session and display part
     Session *theSession = Session::GetSession();
     Part *workPart(theSession->GetParts()->GetWork());
     Part *displayPart(theSession->GetParts()->GetDisplay());
  
     //create feature builder
     Featureseature *nullFeatures_Feature(NULL);
     Features::BlockFeatureBuilder *blockFeatureBuilder1;
     blockFeatureBuilder1 = workPart->GetFeatures()->CreateBlockFeatureBuilder(nullFeatures_Feature);
  
     //set feature builder data
     Point3d originPoint1(0.0, 0.0, 0.0);
     blockFeatureBuilder1->SetOriginAndLengths(originPoint1, "100", "100", "100");
  
     Body *nullBody(NULL);
     blockFeatureBuilder1->SetBooleanOperationAndTarget(Featureseature::BooleanTypeCreate, nullBody);
  
     //commit feature
     Featureseature *feature1;
     feature1 = blockFeatureBuilder1->CommitFeature();
  
}
  呵呵,就很轻松的搞定了,是不是比以前简单了很多。
4
发表于 2005-6-24 09:55:24 | 只看该作者
哈,不错,不知道supergirl是否知道
C#中的
// Make the displayed window a child of the main NX window
NXOpenUI.FormUtilities.SetApplicationIcon(this);
NXOpenUI.FormUtilities.ReparentForm(this);
与C/C++那个函数对应啊?
5
发表于 2005-6-30 20:33:29 | 只看该作者
顶一下!
6
发表于 2005-7-1 09:47:03 | 只看该作者
不错,很有启发。谢谢
只是附件下载不下来,能发一份给我吗?
我的E-mail:dq_guoli@163.com
谢谢了!!!
7
发表于 2005-7-1 10:03:37 | 只看该作者
请问open c++是不是能实现所有open c能实现的功能?
8
发表于 2005-7-1 10:22:21 | 只看该作者
NXOPEN不是openc++,你可以参看前面有很多人发的关于NXOPEN的帖子,NXOPEN是NX3才出的新的API,它支持C#,C++,VB等多种开发语言。它将替代以前的API。
9
发表于 2005-7-1 11:16:59 | 只看该作者
哦, 那NXOPEN现在是不是能实现所有open c能实现的功能?
10
发表于 2005-7-1 13:11:50 | 只看该作者
NXOPEN是重新开发的API,它的功能远远比以前的UGOPEN强大,不过到目前还有很多的新的功能在增加中,偶个人觉得基本上是够用了。
  
至于老的UGOPEN,你可以看到它被整个封装到NXOPEN中了,在NXOPEN.UF中。喜欢的话,可以继续用。
  
但是偶觉得在NXOPEN中,如果还继续用UGOPEN被封装后的函数,还不如直接用老的UGOPEN。呵呵,不过这样做的好处是,封装后的UGOPEN函数倒是可以支持C#和VB了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-31 12:54 , Processed in 0.045536 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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