资源简介
Isight集成UG10中UGupdate制作,C++二次开发,直接更新模型并输出x_t
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include pressions.h>
using namespace std;
/*
功能:
用exp文件更新prt文件文,并将prt文件另存为x_t文件
调用方法:
system(“you.prt you.exp you.x_t“)
createprocess(“you.prt“,“you.exp d:\\you.x_t“...)
注意:
文件名一定要写全,在导出时会自动删除旧的文件否则可能
因为文件已经存在而导致导出x_t文件失败。
sannuaa202
visualsan@yahoo.cn
2011.11.13
*/
int prt_save_as_xt(tag_t string ps);
//引入lib文件,因人而异
#pragma comment(lib“D:\\Program Files\\Siemens\\NX 10.0\\UGOPEN\\libufun.lib“)
#define VISUALSAN_NUAA_202_RUN(x)\
if(0!=x)\
{\
char msg[133];\
UF_get_fail_message( xmsg );\
cout< return -1;\
}
int main(int argc char **argv)
{
//实现初始化ug api否则其它ug函数是无法使用的
VISUALSAN_NUAA_202_RUN(UF_initialize());
//文件路径
string prt ep;
string x_t;//x_t格式文件地址
/*参数个数检查,
注意用system(“UG_update.exe xx.prt yy.exp“)调用时,
默认第一个参数为exe地址,所以你的参数
是第二个开始;用createprocess时,则参数和你传递的一样
system(“UG_update.exe xx.prt yy.exp yy.x_t“)
argv[0]=UG_update.exe argv[1]=xx.prt argv[2]=yy.exp argv[3]=yy.x_t
createprocess(“UG_update.exe““xx.prt yy.exp yy.x_t“....)
argv[0]=xx.prt argv[1]=yy.exp argv[2]=yy.x_t*/
if (argc < 3)
{
cerr << “参数个数不足“;
return -1;
}
//默认你是用createprocess创建线程的
if (argc == 3)
{
prt = argv[0]; //prt文件
ep = argv[1]; //exp文件
x_t = argv[2]; //x_t文件
}
//否则是用system调用的
else
{
prt = argv[1]; //prt文件
ep = argv[2]; //exp文件
x_t = argv[3]; //x_t文件
}
//打开模型文件
UF_PART_load_status_t st;
tag_t prt_id;
//打开prt文件
VISUALSAN_NUAA_202_RUN(UF_PART_open(prt.c_str() &prt_id &st));
//更新模型文件
VISUALSAN_NUAA_202_RUN(UF_MODL_import_exp((char*)ep.c_str() 0));
//更新模型
VISUALSAN_NUAA_202_RUN(UF_MODL_update());
//写入文件
VISUALSAN_NUAA_202_RUN(UF_PART_save());
//另存为x_t文件
if (-1 == prt_save_as_xt(prt_id x_t))
return -1;
//关闭prt文件
VISUALSAN_NUAA_202_RUN(UF_PART_close(prt_id 1 1));
VISUALSAN_NUAA_202_RUN(UF_PART_free_load_status(&st));
//退出前UF_terminate调用清理
VISUALSAN_NUAA_202_RUN(UF_terminate());
return 0;
}
int prt_save_as_xt(tag_t body_tag string ps)
{
//没有后缀名时,加上后缀名
if (std::string::npos == ps.find(“.x_t“))
ps += “.x_t“;
//引用代码:Ug2Ansys.cpp 李 响 中国地质大学(北京) 2006.12.31
uf_list_p_t body_list;
// 获得装配树根事例root_part_occ 当函数返回NULL_TAG时 表明当前部件文件中没有装配(即单个部件)
tag_t root_part_occ = UF_ASSEM_ask_root_part_occ(body_tag);
VISUALSAN_NUAA_202_RUN(UF_MODL_create_list(&body_list));
// 如果是单个部件
if (root_part_occ == NULL_TAG)
{
tag_t object = NULL_TAG;
int UF_body_type;
int type;
int subtype;
do {
VISUALSAN_NUAA_202_RUN(
UF_OBJ_cycle_objs_in_part(body_tag UF_solid_type &object)
);
if (object != NULL_TAG)
{
VISUALSAN_NUAA_202_RUN(
UF_OBJ_ask_type_and_subtype(object &type &subtype)
);
VISUALSAN_NUA 属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 153127 2018-10-07 15:52 UGupdate制作及注意事项.docx
文件 4695 2018-10-06 23:35 NX10_update7.cpp
文件 83456 2018-10-06 23:15 NX10_update7.exe
----------- --------- ---------- ----- ----
241278 3
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
川公网安备 51152502000135号
评论
共有 条评论