iCAx开思网

标题: 用.net开发UG(exe)版 [打印本页]

作者: zhjb113    时间: 2005-3-20 17:13
标题: 用.net开发UG(exe)版
1 用.net2003建立一个控制台应用程序
2 将目录ugii\managed下除ManagedLoader.dll外的dll文件加入到你的工程里面的References
3 将下面的代码复制到你的Main函数里面
             theSession = Session.GetSession();
              
             theSession.Parts.NewDisplay("d:\\1.prt",NXOpen.Part.Units.Millimeters);
             NXOpen.Features.Feature nullFeatures_Feature = null;
             NXOpen.Part pp=theSession.Parts.Work;
             myblock = pp.Features.CreateBlockFeatureBuilder(nullFeatures_Feature) ;
             Point3d ps = new Point3d(0.0, 0.0, 0.0);
             myblock.SetOriginAndLengths(ps, "100", "100", "100");
             myblock.CommitFeature();
             NXOpen.PartSaveStatus status;
             theSession.Parts.Work.Save(NXOpen.Part.SaveComponents.True,NXOpen.Part.CloseAfterSave.False, out status);
  
4 修改项目的属性,将输出文件定位到ugii目录
5 编译直接运行生成的exe文件(不需要启动UG)
6 在d:\下会生成文件1.prt
作者: 深夜摔键盘    时间: 2005-3-20 18:45
张兄给的代码不是很全。
试了试,C#不熟。
  
过程如下:
1.建立C#工程。文件 | 新建 |项目,选择vc#项目,生成console台程序
作者: 深夜摔键盘    时间: 2005-3-20 18:53
2.在解决方案流浏栏里,在"引用"目录处,鼠标右键,选择"添加引用"。在弹出的"添加引用"对话框中,选择"项目"页,从文件"浏览"对话框中找到ugII\managed下除ManagedLoader.dll外的dll文件,把它们加到工程中。
  
看了看书,这里添加的库,在c#的书里叫程序集(Assemblies).
书上还说程序集内的成员就是命名空间,命名空间是程序集中所定义的类的内部结构组织。(我理解水平不高,不明白它说的啥,看看代码,好像是我们定义的类都是在命名空间中的,有C#学的好的兄弟,过来讲讲)。
作者: 深夜摔键盘    时间: 2005-3-20 19:11
一旦用了相应的程序集,可以使用using指令指名所引用的程序集的命名空间。
对于这个小程序,在代码开始处要加上
using NXOpen;
using NXOpen.UF;
  
然后张兄的程序完整之后如下:
using System;
using NXOpen;
using NXOpen.UF;
  
namespace drawBlock
{
   class Class1
   {
     public static Session theSession;
     public static UFSession theUFSession;
  
     static void Main(string[] args)
     {
       theSession = Session.GetSession();  
       theUFSession = UFSession.GetUFSession();  
       theSession.Parts.NewDisplay("d:\\1.prt",NXOpen.Part.Units.Millimeters);  
  
       NXOpen.Features.Feature nullFeatures_Feature = null;  
       NXOpen.Part pp=theSession.Parts.Work;
   
       NXOpen.Features.BlockFeatureBuilder myblock=pp.Features.CreateBlockFeatureBuilder(nullFeatures_Feature) ;
       Point3d ps = new Point3d(0.0, 0.0, 0.0);  
       myblock.SetOriginAndLengths(ps, "100", "100", "100");  
       myblock.CommitFeature();  
       NXOpen.PartSaveStatus status;  
       theSession.Parts.Work.Save(NXOpen.Part.SaveComponents.True,NXOpen.Part.CloseAfterSave.False, out status);
     }
   }
}
作者: 深夜摔键盘    时间: 2005-3-20 19:23
把代码再改改,变成下面这样,仔细与上面的对比一下,起码能知道一点using的用处。
using System;
using NXOpen;
using NXOpen.Features; //加了一条
using NXOpen.UF;
  
namespace drawBlock
{
   class Class1
   {
     public static Session theSession;
     public static UFSession theUFSession;
  
     static void Main(string[] args)
     {
       theSession = Session.GetSession();  
       theUFSession = UFSession.GetUFSession();  
       theSession.Parts.NewDisplay("d:\\1.prt",NXOpen.Part.Units.Millimeters);  
  
       Feature nullFeatures_Feature = null; /注意这里与上面代码的不同之处
       NXOpen.Part pp=theSession.Parts.Work;
   
       BlockFeatureBuilder myblock=pp.Features.CreateBlockFeatureBuilder(nullFeatures_Feature) ;//注意这里与上面代码的不同之处
  
       Point3d ps = new Point3d(0.0, 0.0, 0.0);  
       myblock.SetOriginAndLengths(ps, "100", "100", "100");  
       myblock.CommitFeature();  
       NXOpen.PartSaveStatus status;  
       theSession.Parts.Work.Save(NXOpen.Part.SaveComponents.True,NXOpen.Part.CloseAfterSave.False, out status);
     }
   }
}
作者: 深夜摔键盘    时间: 2005-3-20 19:27
修改文件输出路径,从菜单"项目"|属性,打开属性对话框,改改。
也可以不改。
在NX3的菜单"文件"|"执行"|"NX打开",找到你的程序,即可运行。
作者: herryweiwei    时间: 2005-3-20 19:34
高手过招讨论,小弟岂能错过,搬个凳子学东西。
顶!
作者: 深夜摔键盘    时间: 2005-3-20 20:04
没学会走,先跑了一下。发现好多问题一时还不理解.
也是这两天,改用vc++.net2003,写代码,调试程序觉得比vc6好用多了。
  
想开始学习vc#.net对NX的二次开发,有没有兄弟扎个堆,一块干的?
作者: zhjb113    时间: 2005-3-20 20:19
唉,我觉得自己好懒,想简单了事,就没有贴代码,想不到这么多问题。
谢谢键盘帮我指正。
作者: zhjb113    时间: 2005-3-20 20:25
深夜摔键盘 wrote:
修改文件输出路径,从菜单"项目"|属性,打开属性对话框,改改。  
  也可以不改。  
  在NX3的菜单"文件"|"执行"|"NX打开",找到你的程序,即可运行。

  
修改一下输出路径,你可以直接运行你的exe程序,不需要启动UG
作者: supergirl    时间: 2005-3-20 20:26
呵呵,很神奇啊。
感觉NXOPEN比以前的UGOPEN功能全了很多,而且开发起来也容易了很多。
作者: zhjb113    时间: 2005-3-20 20:35
是的,NXOPEN是UG新一代的开发工具。UGS已经停止对UG/Open的后续支持,UGOpen将不再增加新的函数,所有的二次开发工具的重点将转移的NXOpen,从4.0开始UG将对NXOPEN进行全面的扩充,你几乎能够使用所有UG的功能。
  
使用NXOpen你会有更多的选择,C++,C#,VB甚至Java 都可以用于UG的二次开发。
衷心希望UG的开发者能够尽快熟悉新的UG开发工具,让NXOpen 流行起来。
  
我个人的观点,NXOpen将比CAA更为简单,方便,不信你可以试一下。熟悉CAA的网友也可以试一下NXOpen,比较一下两者,请发表你的看法
作者: 深夜摔键盘    时间: 2005-3-20 20:40

作者: vodka    时间: 2005-3-21 15:36
NXOpen的真正好处还在于
1 代码生成自动化(JA)
2 支持网络分布运算,像Web service等。以后你可以把你开发的应用放在网络服务器上,给各用户一个小插件就行了,根本杜绝盗版问题
作者: zhjb113    时间: 2005-3-22 12:29
vodka wrote:
NXOpen的真正好处还在于  
  1 代码生成自动化(JA)  
  2 支持网络分布运算,像Web service等。以后你可以把你开发的应用放在网络服务器上,给各用户一个小插件就行了,根本杜绝盗版问题

  
我不知道NX3 里面有没有JA
我正打算做一个Remote模式的应用程序呢,想不到你先说了。
作者: zhjb113    时间: 2005-3-22 12:43
NX3中有JA,不过不太全。
作者: David2005    时间: 2005-3-22 16:44
做UG开发的兄弟们,我们可以联合起来做一些东西。。。。。。。
作者: sizu    时间: 2005-3-23 01:19
NX 3。0 里有NXOpen吗?它可以完全代替UGOpen?
作者: zhjb113    时间: 2005-3-23 11:32
NX 3。0 里有NXOpen! 它可以完全代替UGOpen!并且提供了比UGOpen更多的功能。
我的例子就是在NX3上作的啊
作者: fourwood    时间: 2005-3-26 10:20
可是NX 3.0 里的NXOpen C++还是不能完全代替UGOpen API C,里面封装的类太少了!
.NET下的VB和C#的实现功能并不比UGOpen API C与NXOpen C++多,而又少了C/C++的效率便捷。
作者: 深夜摔键盘    时间: 2005-3-26 12:38
fourwood兄,有没有分析一下NXOpen.UFSession,好像是在那里封装了OPEN C API.
  
我看样板程序用了两个类,NXOpen.Session和NXOpen.UFSession,后来自己试着用NXOpen.UFSession写了个小程序,发现里面好像封了一整套的OPEN C API,并且为每个API加了VB接口,使VB.NET亦可以调用。
作者: zhjb113    时间: 2005-3-26 17:32
我刚才试了一下可以不需要NXOpen.UFSession,你可以测试一下,把NXOpen.UFSession去掉,看看你的程序是否能够通过。
  
我认为除非你调用UF的函数,否则你完全没有必要调用NXOpen.UFSession。
  
之所以提供UFSession是为了支持UF的函数,以方便UF的用户的升级。
  
NXOpen的另外一个有点是面向对象的编程风格,与Open++ 不同,他比Open++封装的内容要广泛的多,Open++ 仅仅提供了非常有限的功能,是UF的一个翻版,但是比UF的功能差得很远。
NXOpen不仅涵盖了UF的所有功能,并且提供了非常多的新功能
作者: spline    时间: 2005-3-26 18:03
请教一下,如果不用VS.net 2003只是使用SDK中的csc.exe,如何写命令来编译源代码(引用NXOPen的那些东西,以及Office的那些dll).这样就不用购买VS.net 2003这个东西了.
作者: zhjb113    时间: 2005-3-26 18:28
帮主,你的问题好难啊!
作者: fourwood    时间: 2005-3-26 19:10
正因为NXOpen.UF名字空间中包含等同OPEN C API的类,这里面的类只是简单与API函数一一对应了,所以这些类之间没有继承关系,没有形成一个体系,不能进行面对对象程序设计,还不如直接使用API函数。
当然正因为包含了这些类,所以NXOpen就涵盖了UG Open API以前所包含的功能,但是从C#是一种面对对象的程序设计语言来看(与JAVA语法相似,但没有JAVA跨平台的功能),同NXOpen C++一样可用的类并不多(UG/KF里面的类就比较多了),C#其它空间的类和NXOpen C++的类差不多。
还是期待能早点使用JAVA语言进行UG的二次开发,同时希望能得到功能更全的UG类库,以后开发就简单多了。
作者: 深夜摔键盘    时间: 2005-3-26 19:24
可以的。
命令行格式如下:
CSC /target:library /lib: 所引用的dll目录 /reference:*.dll;*.dll; cs文件所在的目录/cs文件名
可能应该在开头还得加个out项来指定输出文件的路径,我试了一下,结果输到VS。NET里了。
作者: 深夜摔键盘    时间: 2005-3-26 19:41
out 不行,不知道怎么输出到指定路径下。
作者: thomasw    时间: 2005-4-7 12:59
高手啊,我得向你们学习学习啊,我现在准备在UG平台上用c#进行二次开发,实现网络化的协同设计。现在就遇到很多弱弱的问题了,向你们请教可不要见笑啊,呵呵!c#这个编程工具的确是个好东东,比c和c++容易多了,而且功能非常强大,使用起来就好像VB一样简单,我们以后可要共同探讨探讨啊!
作者: 深夜摔键盘    时间: 2005-4-7 16:41
这几天看了些C#,简单是简单了,可编程时好像只能使用线性的数据结构吧,怎么建立树啊,图啊这样的非线性的结构?
  
用C#的兄弟讲讲吧。
作者: zhjb113    时间: 2005-4-7 20:41
NXOPEN4.0将会提供更为丰富的API接口,UGOpen将停止继续开发
作者: thomasw    时间: 2005-4-8 09:18
现在上哪儿去找NXopen的相关资料啊?书店里卖这种书的很少啊,望大侠们指点。
作者: thomasw    时间: 2005-4-8 10:45
to:深夜摔键盘
我现在就是准备用C#+NXOPEN做网络方面的开发,以后可要向你学习啊!我的POPO:wqa_7457@163.com,也是我的邮箱。QQ:309056709,常交流啊!
作者: amd    时间: 2005-4-8 12:13

作者: zhangdino    时间: 2005-4-15 21:04
vodka  
能否将NX的分布式的开发模式的应用稍微讲解一下?
  
作者: Fields2003    时间: 2005-4-17 10:34
不错,坐下来慢慢听.....
作者: miraculous    时间: 2005-4-22 18:19
好东西路过不容错过
作者: hxn10102    时间: 2005-4-27 09:50
zhjb113和深夜摔键盘兄,小弟刚刚学用vs.net2003进行nxopen开发,按照两位做法,遇到一个问题难以应对,请提示帮以解决。
具体问题在附件的图片中。
作者: dq_guoli    时间: 2005-6-8 16:50
我也遇到了同样的错误!请高手指点
作者: 深夜摔键盘    时间: 2005-6-8 19:30
看看你的D盘上,是不是已经有了1.prt文件,有的话,删掉,再运行程序。
UG拒绝创建同名prt。
作者: gao264    时间: 2005-6-10 09:15
好东西,一直想学学用VS.net开发UG!BTW:怎么赚积分的啊?怎么有的帖子还加密的啊!
作者: zhjb113    时间: 2005-6-11 19:41
hxn10102 wrote:
zhjb113和深夜摔键盘兄,小弟刚刚学用vs.net2003进行nxopen开发,按照两位做法,遇到一个问题难以应对,请提示帮以解决。  
  具体问题在附件的图片中。

  
你生成的exe文件应该位于UGII目录下面,否则它找不到你的UG的dll
作者: dove616    时间: 2005-6-22 16:14
经典,顶
作者: young102    时间: 2005-7-28 09:59
我用的是borlang c#做的,可以运行.
真是高手呀,以后多交流
作者: cam-yp    时间: 2006-11-16 17:59
up
作者: chaosfeng    时间: 2006-11-17 13:10
都是高手,厉害,佩服中。呵呵
作者: run1run    时间: 2006-11-23 15:42
顶一下。
怎么有的帖子还加密的?
作者: bitwangrao    时间: 2006-12-30 22:43
向高手们请教 我用同样的办法建立了项目文件 将项目属性改为输出dll
并另外建了一个应用程序项目来引用这个动态库 以此给本项目的main函数传参
但是在运行的时候老提示无法加载 DLL (libpart)。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.DllNotFoundException: 无法加载 DLL (libpart)。
这是为什么呢?
拜谢!
作者: bitwangrao    时间: 2007-1-1 14:12
为什么一定要用控制台程序呢?应用程序为什么就运行不了呢?
作者: zalh    时间: 2007-1-2 11:00
dddddddddddddd
作者: gao264    时间: 2007-3-12 14:04
这个是好帖,要顶起来
作者: wjf1811    时间: 2007-3-12 14:22
你好,我也希望可以尝试这样的工作,可是有点疑问,当需要在UG里面选取面,计算长度,体积等的时候,你准备如何处理呢?
作者: kornity    时间: 2007-3-15 18:37
斑竹,能告诉我怎么对vc++进行连接啊,我现在只会进行open api的连接,但是对 NXOPEN是个新手,菜鸟,希望得到帮助,谢谢
作者: kornity    时间: 2007-3-15 18:40
谁有进行NXOPEN开发的例子,能发一个给我不,我的油箱是kornity2001@163.com ,谢谢
作者: liang8849    时间: 2007-3-28 10:21
好贴子就应该顶起来。
请高手发些NXopen开发的例子来,让大家学习学习!
作者: gao264    时间: 2007-3-29 08:59
再顶~~我这两天在尝试用.net开发,可是每次从UG执行都出现问题,不晓得怎么办?是不是要先装.net framework啊?
作者: j_yu_ku    时间: 2007-8-21 20:34
标题: NXOpen中如何进行装配?
在使用NXOpen进行装配的时候该怎么做呢?
用API可以方便的进行mating condition设置,但是NXOpen我怎么都搞不定,请指教!
作者: waster    时间: 2009-10-24 09:28
以前用api做开发,与数据库的连接不是很方便,现在想该用C#了,好像用C#的很少,突然发现了这个帖子,帮助很大。
作者: dkyang    时间: 2010-4-1 16:46
有意思,想加入,不知道有没有什么东西可以做的?
作者: HappyIvan    时间: 2010-4-24 21:42
xuexi 33# amd
作者: HappyIvan    时间: 2010-4-24 21:42
看了你们的讨论,很精彩




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