NX二次开发-克隆操作
模板文件:

克隆替换字符串:

1 #include "Text.h"
2 extern DllExport void ufsta(char *param, int *returnCode, int rlen)
3 {
4 //克隆的7个步骤 我是“王牌飞行员-里海”欢迎关注我的博客https://www.cnblogs.com/KMould/
5 // 1. UF_CLONE_initialise
6 // 2. UF_CLONE_add_assembly UF_CLONE_add_part
7 // 3. UF_CLONE_set_def_action //指定默认的克隆方式
8 // 4. UF_CLONE_set_name_rule
9 // 5. UF_CLONE_set_def_directory
10 // 6. UF_CLONE_perform_clone
11 // 7. UF_CLONE_terminate
12
13 UF_initialize();
14
15 //初始化一个克隆操作。如果克隆操作已经启动,这个例程将返回UF_CLONE_err_active
16 UF_CLONE_operation_class_t operation_class = UF_CLONE_clone_operation;
17 UF_CLONE_initialise(operation_class);
18
19 //UF_CLONE_add_assembly
20 //此例程将装配添加到当前克隆操作。
21 //任何加载错误都将放在load_status输出参数中。
22
23 //UF_CLONE_add_part 添加部件到克隆装配中
24 //此例程将部件添加到当前克隆操作。如果有子部件,则仅引用不克隆子部件
25
26 // template01.prt
27 // |--template01-1.prt
28 // |__template01-2.prt
29
30 UF_PART_load_status_t error_status;
31 string PartPath = "H:\\clone\\template\\template01.prt";
32 UF_CLONE_add_assembly(PartPath.c_str(), &error_status);
33 UF_free_string_array(error_status.n_parts, error_status.file_names);
34 UF_free(error_status.statuses);
35
36 //指定默认的克隆方式
37 //UF_CLONE_clone 克隆
38 //UF_CLONE_retain 保持
39 //UF_CLONE_replace 替换
40 UF_CLONE_action_t action = UF_CLONE_clone;
41 UF_CLONE_set_def_action(action);
42
43 //指定默认文件名的方法
44 UF_CLONE_naming_technique_t naming_technique = UF_CLONE_naming_rule;
45 UF_CLONE_set_def_naming(naming_technique);
46
47 //初始化命名失败结构,需要在执行前调用
48 UF_CLONE_naming_failures_t naming_failures;
49 UF_CLONE_init_naming_failures(&naming_failures);
50 //定义新装配的克隆命名规则
51 UF_CLONE_name_rule_def_t name_rule;
52 //UF_CLONE_prepend_string //加前缀
53 //UF_CLONE_append_string //加后缀
54 //UF_CLONE_replace_string //替换
55 //UF_CLONE_rename //重命名
56 name_rule.type = UF_CLONE_replace_string;
57 name_rule.base_string = "emp"; //如果替换则输入被替换的字符 //如果是加前缀 加后缀则为""
58 name_rule.new_string = "pme";
59 UF_CLONE_set_name_rule(&name_rule, &naming_failures);
60
61 //创建或定义克隆部件的存储目录
62 UF_CLONE_set_def_directory("H:\\clone\\Part");
63
64 //执行克隆操作
65 UF_CLONE_perform_clone(&naming_failures);
66
67 if (naming_failures.n_failures > 0)
68 {
69 UF_free_string_array(naming_failures.n_failures, naming_failures.input_names);
70 UF_free_string_array(naming_failures.n_failures, naming_failures.output_names);
71 UF_free(naming_failures.statuses);
72 }
73
74 //如果存在克隆操作,此例程将终止当前克隆操作,如果没有克隆操作,则不返回错误。 我是“王牌飞行员-里海”欢迎关注我的博客https://www.cnblogs.com/KMould/
75 UF_CLONE_terminate();
76
77 UF_terminate();
78 }
79
80 extern int ufusr_ask_unload(void)
81 {
82 return (UF_UNLOAD_IMMEDIATELY);
83 }
如果有重名的则克隆失败,优化:
1 #include "Text.h"
2 extern DllExport void ufsta(char *param, int *returnCode, int rlen)
3 {
4 //克隆的7个步骤 我是“王牌飞行员-里海”欢迎关注我的博客https://www.cnblogs.com/KMould/
5 // 1. UF_CLONE_initialise
6 // 2. UF_CLONE_add_assembly UF_CLONE_add_part
7 // 3. UF_CLONE_set_def_action //指定默认的克隆方式
8 // 4. UF_CLONE_set_name_rule
9 // 5. UF_CLONE_set_def_directory
10 // 6. UF_CLONE_perform_clone
11 // 7. UF_CLONE_terminate
12
13 UF_initialize();
14
15 //初始化一个克隆操作。如果克隆操作已经启动,这个例程将返回UF_CLONE_err_active
16 UF_CLONE_operation_class_t operation_class = UF_CLONE_clone_operation;
17 UF_CLONE_initialise(operation_class);
18
19 //UF_CLONE_add_assembly
20 //此例程将装配添加到当前克隆操作。
21 //任何加载错误都将放在load_status输出参数中。
22
23 //UF_CLONE_add_part 添加部件到克隆装配中
24 //此例程将部件添加到当前克隆操作。如果有子部件,则仅引用不克隆子部件
25
26 // template01.prt
27 // |--template01-1.prt
28 // |__template01-2.prt
29
30 UF_PART_load_status_t error_status;
31 string PartPath = "H:\\clone\\template\\template01.prt";
32 UF_CLONE_add_assembly(PartPath.c_str(), &error_status);
33 UF_free_string_array(error_status.n_parts, error_status.file_names);
34 UF_free(error_status.statuses);
35
36 //指定默认的克隆方式
37 //UF_CLONE_clone 克隆
38 //UF_CLONE_retain 保持
39 //UF_CLONE_replace 替换
40 UF_CLONE_action_t action = UF_CLONE_clone;
41 UF_CLONE_set_def_action(action);
42
43 //指定默认文件名的方法
44 UF_CLONE_naming_technique_t naming_technique = UF_CLONE_naming_rule;
45 UF_CLONE_set_def_naming(naming_technique);
46
47 //初始化命名失败结构,需要在执行前调用
48 UF_CLONE_naming_failures_t naming_failures;
49 UF_CLONE_init_naming_failures(&naming_failures);
50
51 //创建或定义克隆部件的存储目录
52 UF_CLONE_set_def_directory("H:\\clone\\Part");
53
54 int iAddNum = 0;
55 int failcode = 1;
56 int iMaxWhile = 10000;
57 while (failcode)
58 {
59 if (iAddNum > iMaxWhile) break;
60 iAddNum += 1;
61 //定义新装配的克隆命名规则
62 UF_CLONE_name_rule_def_t name_rule;
63 //UF_CLONE_prepend_string //加前缀
64 //UF_CLONE_append_string //加后缀
65 //UF_CLONE_replace_string //替换
66 //UF_CLONE_rename //重命名
67 //前缀
68 name_rule.type = UF_CLONE_prepend_string;
69 name_rule.base_string = ""; //如果替换则输入被替换的字符 //如果是加前缀 加后缀则为""
70 string strNewName= "6666-" + to_string(iAddNum) + "-";
71 sprintf(name_rule.new_string, "%s", strNewName.c_str());
72
73 UF_CLONE_set_name_rule(&name_rule, &naming_failures);
74 //执行克隆操作
75 failcode = UF_CLONE_perform_clone(&naming_failures);
76 }
77
78 if (naming_failures.n_failures > 0)
79 {
80 UF_free_string_array(naming_failures.n_failures, naming_failures.input_names);
81 UF_free_string_array(naming_failures.n_failures, naming_failures.output_names);
82 UF_free(naming_failures.statuses);
83 }
84 //如果存在克隆操作,此例程将终止当前克隆操作,如果没有克隆操作,则不返回错误。 我是“王牌飞行员-里海”欢迎关注我的博客https://www.cnblogs.com/KMould/
85 UF_CLONE_terminate();
86 UF_terminate();
87 }
88
89 extern int ufusr_ask_unload(void)
90 {
91 return (UF_UNLOAD_IMMEDIATELY);
92 }
NX二次开发-克隆操作的更多相关文章
- NX二次开发 克隆
NXOpen.UF.UFSession theUfSession = NXOpen.UF.UFSession.GetUFSession(); try { //初始化 NXOpen.UF.UFClone ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...
- C# NX二次开发环境搭建
在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...
- NX二次开发-获取WCS坐标系的原点坐标和矩阵标识
函数:UF_CSYS_ask_csys_info() 函数说明:获取工作坐标系对象的标识符. 用法: #include <uf.h> #include <uf_csys.h> ...
- 【NX二次开发】获取指定矩阵标识的矩阵值
函数:UF_CSYS_ask_matrix_values () 函数说明:获取指定矩阵标识的矩阵值. 用法: #include <uf.h> #include <uf_csys.h& ...
- NX二次开发-获取WCS标识
函数:UF_CSYS_ask_wcs() 函数说明:获取工作坐标系对象的标识. 用法: 1 #include <uf.h> 2 #include <uf_csys.h> 3 e ...
- NX二次开发-创建(临时)坐标系
函数:UF_CSYS_create_csys() . UF_CSYS_create_temp_csys() 函数说明:创建坐标系 .创建临时坐标系 用法: #include <uf.h> ...
- NX二次开发-通过3x3矩阵获取XYZ轴矢量
函数:UF_CSYS_ask_wcs() 函数说明:通过3x3矩阵获取XYZ轴矢量 用法: 1 #include <uf.h> 2 #include <uf_mtx.h> 3 ...
随机推荐
- MySQL的Double Write并不难理解
目录 问题引入- 断电了 不一会 - 来电了 Double write工作流程 恢复的过程 配置参数 疑问 推荐阅读 问题引入- 断电了 今天为大家介绍一个新的名词:double write. 相信你 ...
- 【python】Leetcode每日一题-寻找旋转排序数组中的最小元素
[python]Leetcode每日一题-寻找旋转排序数组中的最小元素 [题目描述] 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组nums ...
- 【TensorFlow】使用Object Detection API 训练自己的数据集报错
错误1: 训练正常开始后,能正常看到日志输出,但中途报错 ResourceExhaustedError (see above for traceback): OOM when allocating ...
- CAS指令
原文链接:https://www.jianshu.com/p/00edb3d74a33 CAS是CPU的一条指令,其具有原子性,原子性是由CPU硬件层面保证的. CAS原语有三个操作数--内存 ...
- MySQL DDL详情揭露
前言: MySQL中DDL语句,即数据定义语言,用于创建.删除.修改.库或表结构,对数据库或表的结构操作.常见的有create,alter,drop等.这类语句通常会耗费很大代价,特别是对于大表做表结 ...
- xxl-job源码阅读一(客户端)
1.源码入口 使用xxl-job的时候,需要引入一个jar,然后还需要往Spring容器注入XxlJobSpringExecutor <dependency> <groupId> ...
- safari模拟IE
在如下网站找到相对应的useragent https://developers.whatismybrowser.com/useragents/explore/software_name/interne ...
- pycharm编辑器,各种设置及配置修改
Pycharm中如何设置默认自动换行 只对当前文件有效的操作:菜单栏->View -> Active Editor -> Use Soft Wraps: 如果想对所有文件都有效,就要 ...
- PECcpu2006中执行单个测试程序的方法
PECcpu2006中执行单个测试程序的方法 2010-12-30 11:44:00 maray 阅读数 10055更多 分类专栏: 科学理论 版权声明:本文为博主原创文章,遵循CC 4.0 BY ...
- Windows 常用Cmd命令行 (持续更新...)
查看IP ipconfig 查看WIFI密码 netsh wlan show profiles wifi_name key = clear 系统探针 systeminfo CMD重定向 输出符号> ...