iCAx开思工具箱

标题: 用NXOPEN在 .net上开发的例子(C++ 版) [打印本页]

作者: supergirl    时间: 2005-6-23 21:51
标题: 用NXOPEN在 .net上开发的例子(C++ 版)
前几天发了一个用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目录下可以找到,
              
         
作者: supergirl    时间: 2005-6-23 21:57
第三步,添加你的对话框和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();
}
作者: supergirl    时间: 2005-6-24 08:43
第五步,在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();
  
}
  呵呵,就很轻松的搞定了,是不是比以前简单了很多。
作者: fourwood    时间: 2005-6-24 09:55
哈,不错,不知道supergirl是否知道
C#中的
// Make the displayed window a child of the main NX window
NXOpenUI.FormUtilities.SetApplicationIcon(this);
NXOpenUI.FormUtilities.ReparentForm(this);
与C/C++那个函数对应啊?
作者: fourwood    时间: 2005-6-30 20:33
顶一下!
作者: dq_guoli    时间: 2005-7-1 09:47
不错,很有启发。谢谢
只是附件下载不下来,能发一份给我吗?
我的E-mail:dq_guoli@163.com
谢谢了!!!
作者: Tyrael    时间: 2005-7-1 10:03
请问open c++是不是能实现所有open c能实现的功能?
作者: supergirl    时间: 2005-7-1 10:22
NXOPEN不是openc++,你可以参看前面有很多人发的关于NXOPEN的帖子,NXOPEN是NX3才出的新的API,它支持C#,C++,VB等多种开发语言。它将替代以前的API。
作者: Tyrael    时间: 2005-7-1 11:16
哦, 那NXOPEN现在是不是能实现所有open c能实现的功能?
作者: supergirl    时间: 2005-7-1 13:11
NXOPEN是重新开发的API,它的功能远远比以前的UGOPEN强大,不过到目前还有很多的新的功能在增加中,偶个人觉得基本上是够用了。
  
至于老的UGOPEN,你可以看到它被整个封装到NXOPEN中了,在NXOPEN.UF中。喜欢的话,可以继续用。
  
但是偶觉得在NXOPEN中,如果还继续用UGOPEN被封装后的函数,还不如直接用老的UGOPEN。呵呵,不过这样做的好处是,封装后的UGOPEN函数倒是可以支持C#和VB了。
作者: pzytony    时间: 2005-7-10 22:49
上帝,支持
作者: zzz    时间: 2005-9-21 17:27
最近准备用这东东了,顶一下,方便学习。
作者: xilen    时间: 2005-9-26 07:58
顶一下
作者: goodluckwu    时间: 2005-9-26 15:11
顶一下。有时间一定要学习一下:)
作者: skysky15    时间: 2005-10-10 19:37
是不是什么编程工具都可以开发了。如C++ builder!
作者: liulinjian_111    时间: 2009-4-27 09:23
你的附件在哪呀?哪位大侠有呀,给我一份,我的邮箱liulinjian_111@yahoo.com.cn
作者: hzengchai    时间: 2010-8-20 11:38
顶一下。有时间一定要学习一下




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3