NX CAM 二次开发方法总结
目前 CAD/CAM 集成系统数控编程是指以待加工零件 CAD 模型为基础,生成机床可以识
别的 NC 程序并实现加工过程仿真的相关技术。当初次接触 CAM 二次开发时有太多不解,
但通过参与东风模具的 CAM 二次开发后,我已基本掌握了 CAM 编程开发。现在跟大家分享
一下我的开发方法。
一、 熟练操作 NX 中的 CAM 编程。
步骤如下:
第一步:由编程部门在 NX 的加工环境中对三维实体造型进行分析,然后生成几何组,
最后修改相应的几何视图、程序视图等。
第二步:关联相应的加工模板,自动生成对应的几何操作。
第三步:生成刀具路径,以及加工用的正视图和轴测图
第四步:对编程内容进行校对,然后进行后处理,生成 NC 代码。
第五步:发布 NC 程序,下发到车间进行机床加工。
以上就是 CAM 编程过程,我们需要通过手动操作每一步来熟悉 CAM 编程的整个过程,同时
必须认清 CAM 编程中所用的对象,比如 MCS、工件、组、程序视图、几何视图、NC 操作以
及刀具对象等。
二、 分析 UF 函数的定义规则
在 NX 的低版本的 CAM 二次开发中主要使用 NX 提供一系列的 3000 个函数和过程的集
合。这些函数可实现对模型文件及相关模型的操作、界面交互、创建并管理自定义对象等。
它们在 NX 主目录的 UGOPEN 子目录中,同时包含 UF 函数的头文件、静态库文件(libufun.lib、
libugopenint.lib)以及示例程序。下面将简要的介绍一下 CAM 相关的文件名以及函数定义规
则。
1、与CAM 编程相关的文件名及描述:
1) UF_CAM.H
使用 UF_CAM 模块的相关类型和函数定义;
2) UF.H
3) UF_CSYS.H
API 的公共类型和函数定义;
坐标系的操作函数与类型说明;
4) UF_NCGROUP.H
与程序组相关的函数定义;
5) UF_PARAM.H
与对象参数相关的函数定义;
6) UF_OBJECT_TYPES.H 对象类型和子类型的函数定义;
7) UF_OBJ.H
8) UF_UI.H
9) UF_VEC.H
对象的操作函数定义;
用户界面功能的相应函数及结构定义;;
向量的操作函数;
10) UF_PARAM_INDICES.H 与 CAM 相关的参数对象定义
2、函数定义规则:
格式:UF_[area]_[name]
UF_是 USER Function 的简写,表示该函数为 UG OPEN API 函数。
[area]表示应用或模块的简写。例如:NCGROUP、MODL 模块等。
[name]表示动词和名词。例如 UF_NCGROUP_CREATE()为创建程序组,几何组的函数。
3、参数定义规则:
格式:UF_NCGROUP_CREATE([返回数据类型] [函数名](变量列表))
其中函数中的变量定义为如下三种:
“I” 表示函数的输入变量
“O” 表示函数的输出变量
“OF” 表示函数的输出变量,但程序员必须使用 UG OPEN API 中的接口释放内存。例
如:UF_FREE(),UF_FREE_STRING()等
三、 查询有用的 UF 函数方法
在 CAM 开发过程中,程序员最难的是不知道该使用哪个函数来实现相应的功能,
目前总结以下方法可以帮助快速查找相应的函数。
1、熟悉UG OPEN API中的CAM相关的函数方法:
在 NX 主目录的 UGOPEN 子目录中,根据分析 UF 函数的定义规则中的文件名,将
其中所有文件名看一遍,然后根据 UF 函数的定义规则,找到与 CAM 相关的文件。
1) 将 NX 环境设置英文模式,首先打开系统环境变量设置,找到“UGII_LANG”节
点,将值“simpl_chinese”修改其他任意值后,重启 NX 应用程序。
2) 进入 NX 的加工环境,并进行 CAM 编程,在编程过程中会发现很多英文命令,
现在可以根据英文命令到 UF 函数中进行查找,看这些命令属于哪个模块,并
将这些命令与模块的对于关系记录下来。
3) 重复以上操作,可以大致了解每个命令与 UF 函数中的对应关系。
4) 最后根据记录内容,找到对应 UF 函数模块并仔细研读,并理解每个 UF 模块的
作用。
2、查询合适的函数并实现相应功能方法:
熟悉 UG OPEN API 中的 CAM 相关的函数后,现在可根据需求到 UF 函数中查找所需
的函数方法。比如:需要获取 CAM 中刀具的直径参数。经分析,可知刀具直径参
数的值应该从 UF_PARAM 模块中查找。由于访问刀具的直径参数,可知应查找含 ask
关键字的方法,通过以上查询条件可查询出一系列相关的函数:
int UF_PARAM_ask_double_value(tag_t param_tag, int param_index, double * value )
int UF_PARAM_ask_int_value(tag_t param_tag,int param_index, int * value )
int UF_PARAM_ask_str_value(tag_t param_tag,int param_index, char value [100] )
int UF_PARAM_ask_tag_value (tag_t param_tag, int param_index,tag_t * value )
由于直径是数值类型且应该是浮点型,所以可使用 UF_PARAM_ask_double_value
函数获取刀具直径的值。但在输入参数时,发现 param_index 不知应该输入何值。
通过近一步分析,可发现应该从 uf_param_indices.h中查询参数定义,通过对以
上方法逐一查询,最终找到了此参数定义的宏。
#define UF_PARAM_TL_DIAMETER 1000
目前参数已经找到,现在就可通过 UF_PARAM_ask_double_value 函数获取刀具的直
径参数了,如果需要再次获取类似的参数值时,可参照以上方法进行分析并实现。
四、 部分关键函数整理
1、int UF_UI_select_single 使用非模态方式选择NX加工环境中的对象。
2、int UF_PARAM_ask_tag_value 获取对象类型的参数值。
3、UF_CAM_ask_clear_plane_data 获取安全平面位置。
4、UF_CAM_set_clear_plane_data 设置安排平面位置。
5、UF_CAMGEOM_append_items 追加几何组对象。
6、UF_OPER_ask_program_group 访问操作对于的程序组。
7、UF_ask_application_module 访问NX环境中的工作模式。
8、UF_CSYS_create_csys 创建加工坐标系。
9、UF_OBJ_delete_object 删除对象。
10、 UF_DISP_set_highlight 设置对象高亮显示。
11、 UF_DISP_create_image 截图(轴视图和正视图)
12、 UF_UI_ONT_refresh 刷新。
以上就是本次参与东风模具 CAM 二次开发后,对 CAM 二次开发方法的进行的总结,若有对
CAM 二次开发感兴趣的同事,我们可以一起讨论。