• 在C#中直接使用Open API的方法 / A Method of Using Open API in C#


    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据说大大的改进了动态语言特性,可能会更好用一些。

    image

    欢迎访问我的专业知识博客!
    博主:白途思(begtostudy)
    微信/QQ:370566617
    Email:begtostudy#gmail.com
    欢迎访问我的其他博客:我的编程知识博客 我的学术知识博客

  • 相关阅读:
    .net 2.0 使用linq
    重建索引解决mssql表查询超时的问题
    倾斜摄影自动化建模成果的数据组织和单体化
    cesium导入3D模型(obj转gltf)
    github
    JSP转发和重定向的区别
    mysql压缩版的安装教程
    JSP内置对象
    运行jsp常犯的错误
    递归的几个demo
  • 原文地址:https://www.cnblogs.com/begtostudy/p/1882024.html
Copyright © 2020-2023  润新知