UG/Open API二次开发入门——用C语言编写第一个UG外挂程序
-
<p><strong>UG/Open API是UG(现NX)提供的一套C语言开发接口,允许开发者编写自定义的工具来扩展UG的功能。</strong>本文面向零基础入门,带你从环境配置到跑通第一个程序。</p>
<h3>一、开发环境准备</h3>
<h4>1.1 安装VS+UG</h4>
<ul>
<li>安装 Visual Studio(VS2015/2017/2019均可)</li>
<li>安装 NX 10.0 以上版本</li>
<li>确保安装时勾选了 <strong>UG/Open API</strong> 组件</li>
</ul><h4>1.2 环境变量配置</h4>
<p>需要设置以下环境变量:</p>
<pre><code>
UGII_BASE_DIR = D:\Program Files\Siemens\NX 12.0
UGII_ROOT_DIR = %UGII_BASE_DIR%\UGII
</code></pre><h3>二、第一个程序:Hello World</h3>
<h4>2.1 创建源文件</h4>
<p>新建一个 <code>hello.c</code>:</p>
<pre><code>
#include <stdio.h>
#include <uf.h>
#include <uf_ui.h>void ufusr(char *param, int *retcod, int param_len)
{
int error_code;
UF_initialize();// 弹出UG界面消息框 UF_UI_open_listing_window(); UF_UI_write_listing_window("Hello, 模极社!\n"); // 或者用对话框 uc1601("Hello, 模极社!", 1); UF_terminate();}
</code></pre><h4>2.2 编译链接</h4>
<p>在VS开发者命令提示符中:</p>
<pre><code>
cl /c /I"%UGII_BASE_DIR%\UGOPEN" hello.c
link /dll /out:hello.dll hello.obj "%UGII_BASE_DIR%\UGOPEN\libufun.lib"
</code></pre><h4>2.3 运行</h4>
<ul>
<li>将生成的 <code>hello.dll</code> 复制到 <code>%UGII_BASE_DIR%\UGII\menus</code></li>
<li>启动NX,菜单栏会多出一个<strong>用户自定义菜单项</strong></li>
<li>点击即可运行你的第一个UG外挂</li>
</ul><h3>三、常用API速查</h3>
<table>
<tr><td>功能</td><td>API函数</td></tr>
<tr><td>初始化</td><td>UF_initialize()</td></tr>
<tr><td>终止</td><td>UF_terminate()</td></tr>
<tr><td>创建直线</td><td>UF_CURVE_create_line()</td></tr>
<tr><td>创建圆</td><td>UF_CURVE_create_arc()</td></tr>
<tr><td>创建方块</td><td>UF_MODL_create_block1()</td></tr>
<tr><td>选择对象</td><td>UF_UI_select_with_single_dialog()</td></tr>
<tr><td>显示消息</td><td>uc1601()</td></tr>
<tr><td>获取部件</td><td>UF_PART_ask_display_part()</td></tr>
</table><h3>四、注意事项</h3>
<ol>
<li><strong>UG/Open API是C语言接口</strong>,不是C++,虽然C++也能调用但不能用C++类</li>
<li>所有UF_开头的函数返回 <code>int</code> 类型错误码,<strong>必须检查每个API的返回值</strong></li>
<li>编译时注意64位/32位匹配——UG 10.0以上都是64位</li>
<li>调试最方便的方法是 <code>uc1601()</code> 弹消息框,或者写日志文件</li>
</ol><p>掌握这些,UG外挂开发就入门了,后续可以扩展做自动建模、批量出图等功能。</p>
<hr>
<p><strong>
相关工具推荐:使用在线模具计算器快速估算参数</strong></p><p>[mj-mechanical-calc]</p>
<hr>
<p><em>
提示:以上计算工具为纯前端实现,数据仅在本地运算,不会上传至服务器。</em></p><hr>
<h4>
你可能还感兴趣</h4>
<ul>
<li><a href="/t/solidworks%E7%84%8A%E4%BB%B6%E8%AE%BE%E8%AE%A1%E6%95%99%E7%A8%8B%EF%BC%9A%E7%BB%93%E6%9E%84%E6%9E%84%E4%BB%B6%E4%B8%8E%E7%84%8A%E6%8E%A5%E5%88%87%E5%89%B2%E6%B8%85%E5%8D%95/5385">SolidWorks焊件设计教程:结构构件与焊接切割清单</a></li>
<li><a href="/t/4238/4238">discourse-yungouos-pay</a></li>
<li><a href="/t/4234/4234">discourse-mj-steel-query</a></li>
</ul><hr>
<h4>
相关标准参考</h4>
<ul>
<li>GB/T 12555 塑料注射模模架</li>
</ul><hr>
<p><strong>相关推荐:</strong></p>
<ul>
<li><a href="https://www.mj7.cn/t/siemens-nx-2506-cam-5">Siemens NX 2506新版发布:CAM刀路显示升级、5轴去毛刺增强</a></li>
<li><a href="https://www.mj7.cn/t/ug-nx">UG NX扫掠与网格曲面高级技巧</a></li>
<li><a href="https://www.mj7.cn/t/ug-nx-5332">UG NX焊接模块应用:焊缝建模与焊接仿真</a></li>
</ul><hr>
<p>这个参数你们一般设多少?评论区说说。</p>