模板文件:

克隆替换字符串:

 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二次开发-克隆操作的更多相关文章

  1. NX二次开发 克隆

    NXOpen.UF.UFSession theUfSession = NXOpen.UF.UFSession.GetUFSession(); try { //初始化 NXOpen.UF.UFClone ...

  2. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  3. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  4. C# NX二次开发环境搭建

    在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...

  5. NX二次开发-获取WCS坐标系的原点坐标和矩阵标识

    函数:UF_CSYS_ask_csys_info() 函数说明:获取工作坐标系对象的标识符. 用法: #include <uf.h> #include <uf_csys.h> ...

  6. 【NX二次开发】获取指定矩阵标识的矩阵值

    函数:UF_CSYS_ask_matrix_values () 函数说明:获取指定矩阵标识的矩阵值. 用法: #include <uf.h> #include <uf_csys.h& ...

  7. NX二次开发-获取WCS标识

    函数:UF_CSYS_ask_wcs() 函数说明:获取工作坐标系对象的标识. 用法: 1 #include <uf.h> 2 #include <uf_csys.h> 3 e ...

  8. NX二次开发-创建(临时)坐标系

    函数:UF_CSYS_create_csys() . UF_CSYS_create_temp_csys() 函数说明:创建坐标系 .创建临时坐标系 用法: #include <uf.h> ...

  9. NX二次开发-通过3x3矩阵获取XYZ轴矢量

    函数:UF_CSYS_ask_wcs() 函数说明:通过3x3矩阵获取XYZ轴矢量 用法: 1 #include <uf.h> 2 #include <uf_mtx.h> 3 ...

随机推荐

  1. Day003 彻底搞懂++、--

    彻底搞懂++.-- ++.--都是一目运算符 b=a++(把a的值先赋给b,a再自增1) b=++a(a先自增1,再赋给b) 通过一个例子理解 int a=1; int b=a++; int c=++ ...

  2. 数据表格 layui.table

    layui官网-表单 自动渲染 方法渲染 table.render,cols中的field是后台传递的data map.put("data",stuService.selectSt ...

  3. 【.Net Core】分析.net core在linux下内存占用过高问题

    现象 随着程序运行,内存占用率越来越高,直到触发linux的OOM,程序被杀死. 分析工具 运行环境:.net core 3.1(微软的分析工具要求最低3.0,无法分析2.1的core程序,需要先改为 ...

  4. Hive企业级性能优化

    Hive作为大数据平台举足轻重的框架,以其稳定性和简单易用性也成为当前构建企业级数据仓库时使用最多的框架之一. 但是如果我们只局限于会使用Hive,而不考虑性能问题,就难搭建出一个完美的数仓,所以Hi ...

  5. SparkSQL电商用户画像(五)之用户画像开发(客户基本属性表)

    7.电商用户画像开发 7.1用户画像--数据开发的步骤 u 数据开发前置依赖 -需求确定 pv uv topn -建模确定表结构 create table t1(pv int,uv int,topn ...

  6. 推荐几款MySQL相关工具

    前言: 随着互联网技术的不断发展, MySQL 相关生态也越来越完善,越来越多的工具涌现出来.一些公司或个人纷纷开源出一些不错的工具,本篇文章主要介绍几款 MySQL 相关实用工具.提醒下,这里并不介 ...

  7. Django(19)QuerySet API

    前言 我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作.其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager ...

  8. J2SE基础题

    J2SE基础 八种基本数据类型的大小,以及他们的封装类.(有的也说是9中基本数据类型,包括了void) 基本类型 大小(字节) 默认值 封装类 byte 1 (byte)0 Byte short 2 ...

  9. ubuntu下载安装软件并创建图标

    本列以安装webstorm软件 1.官网下载软件的压缩包 2.解压 umlinux@umlinux-PC:~/idea$ tar -zxvf ideaIU-2020.3.1.tar.gz 3.找到we ...

  10. 13.API基础

    1.API 1.1 API概述-帮助文档的使用 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK ...