一、概述
在NX二次开发中我们常常会用到导入和导出命令,这些函数一般放在UF_part.h头文件下,下面针对以上有关功能结合案例进行说明。
二、功能函数说明
2.1导出函数UF_PART_export_with_options函数使用案例(导出当前显示窗口所有实体部件)
函数说明:第一个参数名称(包含路径);第二个参数导出个数;第三个参数导出模型TAG值数组;第四个参数结构体:1)部件规格:new_part=true新的,new_part=flase现有,2)params_mode特征参数,UF_PART_maintain_params保留内部参数,UF_PART_maintain_all_params,保留所有参数,UF_PART_remove_params移除参数,3)表达式传递模式,UF_PART_copy_exp_deeply复制参考的对象,UF_PART_copy_exp_shallowly链接至原先。
//用户定义
#include <uf_modl.h>
#include <uf_assem.h>
#include <uf_obj.h>
#include <uf_ui_ugopen.h>
#include <uf_part.h>
#include <vector>
using std::vector;
//遍历当前显示窗口所有实体
vector<tag_t> MyClass::cycledisplaysolid()
{
//导出部件
vector<tag_t> cyclebody;
//找到工作部件所有的体
tag_t WorkPartTag = UF_ASSEM_ask_work_part();
tag_t objTag = NULL_TAG;
UF_OBJ_cycle_objs_in_part1(WorkPartTag, UF_solid_type, &objTag);
int type;
int subtype;
while (objTag != NULL_TAG)
{
UF_OBJ_ask_type_and_subtype(objTag, &type, &subtype);
if (!subtype)
{
cyclebody.push_back(objTag);
}
UF_OBJ_cycle_objs_in_part1(WorkPartTag, UF_solid_type, &objTag);
}
return cyclebody;
}
UF_initialize();
//导出部件
vector<tag_t> CycleExportBody;
CycleExportBody = cycledisplaysolid();
tag_t ExportBodyTag[100];
for (int j = 0; j < CycleExportBody.size(); j++)
{
ExportBodyTag[j] = CycleExportBody[j];
}
int number = CycleExportBody.size();
UF_PART_export_options_t options12;
options12.new_part = true;
options12.expression_mode = UF_PART_copy_exp_deeply;
options12.params_mode = UF_PART_remove_params;
UF_PART_export_with_options("D:\\ug\\TKLTOOLS\\Part\\qqs.prt", number, ExportBodyTag, &options12);
2.2导入函数UF_PART_import函数使用案例(导入部件)
函数说明:导入部件,第一个参数路径;第二个参数为结构体:1)layer_mode设置模型图层,layer_mode=0工作图层,layer_mode=1原始图层, 2)group_mode是否分组,group_mode=0不分组,group_mode=1分组,3)view_mode导入视图,view_mode=0不导入视图,view_mode=1导入视图和布局,4)cam_mode关于加工信息导入,cam_mode=true导入加工信息,cam_mode=false 不导入加工信息;第三个参数目标坐标系,wcs坐标系,指定坐标系;第四个参数,坐标原点;第五个参数比例,第六个参数,如果分组输出组件tag
UF_initialize();
UF_import_part_modes_t modes;
modes.layer_mode = 0;//工作图层
modes.group_mode = 0;//不创建组
modes.view_mode = 0;//不导入视图和布局
modes.cam_mode = false;//不导入加工信息
double dest_csys[6] = { 1.0,0.0,0.0,0.0,1.0,0.0 };
double dest_point[3] = { 0.0,0.0,0.0 };
double scale = 1.0;
tag_t group = NULL_TAG;
UF_PART_import("C:\\Users\\NINGMEI\\Desktop\\part\\qqs.prt", &modes, dest_csys, dest_point, scale, &group);
UF_terminate();