UG NX 二次开发(基于 Open C)(一) —— 环境配置

张开发
2026/4/10 20:44:09 15 分钟阅读

分享文章

UG NX 二次开发(基于 Open C)(一) —— 环境配置
0. 软件版本说明不同版本的 NX 需要使用官方推荐的 Visual Studio 版本进行二次开发。NX 版本VS 版本NX2312VS2022NX2212VS2022 / VS2019NX12VS2015NX11VS2012 / VS2013NX10VS2012本教程使用 UG NX12 和 VS2015 进行配置其他版本的软件目录可能不同可参考文末的视频进行配置。软件的下载安装请自行上网搜索。1. 方法一使用模板创建工程推荐1.1 复制模板文件在D:\Program Files\UGOPEN\vs_files中全选、复制三个文件夹粘贴到D:\Program Files\Microsoft Visual Studio 14.0中。注意D:\Program Files需要替换为你自己的安装路径。1.2 基于模板新建工程打开 VS2015新建项目 - 已安装 - 模板 - Visual C - NX12 Open Wizard修改名称和路径确定 - Finish。2. 方法二手动创建工程2.1 新建空项目打开 VS2015新建项目 - 已安装 - 模板 - Visual C - Win32 项目修改名称和路径确定 - 下一步 - 应用程序类型选择 DLL - 勾选空项目 - 完成。2.2 项目配置上方工具栏中的解决方案平台更改为 x64。在源文件目录下新建一个 .c 文件。右键项目名称 - 属性平台选择 x64。在C/C和链接器的常规设置中将 UGOPEN 目录如D:\Program Files\UGOPEN添加到附加包含目录中在C/C -预处理器中增加_SECURE_SCL0在链接器 - 输入中把libufun.lib、libugopenint.lib、libnxopencpp.lib、libnxopenuicpp.lib填入附加依赖项回车隔开。/***************************************************************************** ** ** your_project_name.c ** ** Description: ** ** *****************************************************************************/ /* Include files */ #include stdarg.h #include stdio.h #include uf.h #include uf_ui_types.h #include uf_ui.h static void ECHO(char *format, ...) { char msg[UF_UI_MAX_STRING_BUFSIZE]; va_list args; va_start(args, format); vsnprintf_s(msg, sizeof(msg), _TRUNCATE, format, args); va_end(args); UF_UI_open_listing_window(); UF_UI_write_listing_window(msg); UF_print_syslog(msg, FALSE); } #define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))) static void do_ugopen_api(void) { } static int report_error( char *file, int line, char *call, int irc) { if (irc) { char err[133]; UF_get_fail_message(irc, err); ECHO(*** ERROR code %d at line %d in %s:\n, irc, line, file); ECHO( %s\n, err); ECHO(%s;\n, call); } return(irc); } /***************************************************************************** ** Activation Methods *****************************************************************************/ /* Explicit Activation ** This entry point is used to activate the application explicitly, as in ** File-Execute UG/Open-User Function... */ extern DllExport void ufusr( char *parm, int *returnCode, int rlen ) { /* Initialize the API environment */ if( UF_CALL(UF_initialize()) ) { /* Failed to initialize */ return; } /* TODO: Add your application code here */ do_ugopen_api(); /* Terminate the API environment */ UF_CALL(UF_terminate()); } /***************************************************************************** ** Utilities *****************************************************************************/ /* Unload Handler ** This function specifies when to unload your application from Unigraphics. ** If your application registers a callback (from a MenuScript item or a ** User Defined Object for example), this function MUST return ** UF_UNLOAD_UG_TERMINATE. */ extern int ufusr_ask_unload( void ) { return( UF_UNLOAD_IMMEDIATELY ); }将以上代码复制到新建的 .c 文件中。后续开发在do_ugopen_api()函数中添加代码即可。此外也可在D:\Program Files\UG_NX 12.0\UGOPEN目录中随便复制一个 ufd 开头的 .c 模板文件。3. VS 工具栏修改点击工具栏中标签右侧的下三角添加或移除按钮 - 自定义 - 命令 - 工具栏 - 标准 - 添加命令 - 生成 - 生成解决方案 - 确定。后续点击工具栏中添加的生成解决方案按钮即可生成 dll 文件快捷键CtrlShiftB。注意直接点本地 Windows 调试器也能生成 dll 文件但 VS 会因无法直接启动该文件弹出报错提示。参考链接https://www.bilibili.com/video/BV1WE411F7WN?spm_id_from333.788.videopod.episodesvd_source3721e3c238839bce2a58996c3bb3cb04p2https://www.bilibili.com/video/BV1qQMLzGE5b?spm_id_from333.788.videopod.episodesvd_source3721e3c238839bce2a58996c3bb3cb04p54

更多文章