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 ...
随机推荐
- json对象的获取
<script type="text/javascript"> var person = { //json对象定义开始 name:'tom', //字符串 age:24 ...
- Portswigger web security academy:SQL injection
Portswigger web security academy:SQL injection 目录 Portswigger web security academy:SQL injection SQL ...
- Mybatis-Plus03 代码自动生成器
先看完Mybatis-Plus01和Mybatis-Plus02再看Mybatis-Plus03 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerato ...
- Error starting userland proxy: /forwards/expose/port returned unexpected status: 500.
欢迎关注微信公众号 Error starting userland proxy: /forwards/expose/port returned unexpected status: 500. dock ...
- 数据库和SQL概述
一.数据库的概念 1.DB 数据库(database):存储数据的"仓库".它保存了一系列有组织的数据. 2.DBMS 数据库管理系统(Database Management Sy ...
- Django(27)类视图
类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图.使用类视图可以使用类的一些特性,比如继承等. View django.views.generic.base.View是主 ...
- Linux(深度)系统安装富士施乐(网络)打印机
一般来讲,linux系统识别打印机没有问题,重点难点在于后面设置.此文特别感谢:河北石龙的陈一繁销售代表.P288dw施乐官网并未提供Linux的驱动并在安装过程中遇到很多问题,其不厌其烦的为我联系厂 ...
- GO反射类实例
变量的内在机制 类型信息:是静态的元信息,是预先定义好的 值信息:是程序运行过程中动态改变的 反射的使用 获取类型信息:reflect.TypeOf,是静态的 获取值信息:reflect.ValueO ...
- 单独跑ltp-20200508 ./runltp
# cat r3.sh#!/bin/bash # cat r3.sh#!/bin/bashi=1for ((; i<=1000; i++))do/opt/ltp/runltp -s fmtmsg ...
- BRAM 和 DRAM 区别
转载: BRAM和DRAM的区别 Xilinx的FPGA开发板可以直接调用RAM,其中包括了BRAM和DRAM.经过网上查找资料发现,这两者的区别在于: 选择distributed memory ge ...