Begtostudy(白途思)'s Professional Technology Blog

欢迎访问begtostudy的专业知识博客!主要是专业技术和算法为主。
  首页  :: 联系 :: 订阅 订阅  :: 管理

UG NX提供NXOpen类库是支持C#的,只可惜资料太少。很多人使用C#语言开发NX工具,仍然使用以前的UFUN,就是Open API。只不过是通过NXOpen中提供的UF空间封装一下而已。封装是.net常用的技术了。

但是可惜的是,很多函数(如uc1601)并不在这些封装方法之内。也就说,用C#开发,基本上与这些没有封装的函数无缘了。

采用本文的方法就可以解决这些函数不能使用的问题。以uc1601为例。

首先找到函数入口(定位函数)。UG的 API被封装在5个dll里,它们是:libufun.dll、libnxopencpp.dll、libugopenint.dll、 libnxopenuicpp.dll、libopenpp.dll。只要使用DEPENDS.EXE就可以找到API所在的dll。比如uc1601就在libugopenint.dll中。

然后导入函数。要说明的是,最好事先查API手册,知道这个API的定义,也就说参数和返回。

public class OpenAPI
{
    [System.Runtime.InteropServices.DllImport("libugopenint.dll")]
    public static extern void uc1601(string msg,int mode);
}

接下来就可以使用了:

public static int Main(string[] args)
{
    int retValue = 0;
    try
    {
        theProgram = new Program();

        //TODO: Add your application code here
        OpenAPI.uc1601("OK", 1);

        theProgram.Dispose();
    }
    catch (NXOpen.NXException ex)
    {
        // ---- Enter your exception handling code here -----
        UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
    }
    return retValue;
}

当然使用环境还必须是NX要求的方式(Main或者Startup函数作为入口)。

最后说明一下这种方法的不足,就是参数复杂的话比较难使用,不过即将开始走上开发舞台的C#4据说大大的改进了动态语言特性,可能会更好用一些。

前往Begtostudy的编程知识博客(CSDN)