模板文件:

克隆替换字符串:

 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. 修改wordpress版权信息

    修改页脚版权信息位置:找到C:\wamp64\www\wordpress\wp-content\themes\travelify\library\structure\footer-extensions ...

  2. blazor发布之后 刷新404的解决方法

    其实所有单页面应用都一样 只需要在nginx里面配置 location / { root html; index index.html index.htm; rewrite ^/.*/$ / last ...

  3. CRM系统实施的原则

    在我们使用CRM系统服务企业和客户之前,需要先系统的实施它.使用CRM系统却没有发挥它应有价值的案例很多,那么我们要怎样才能让CRM的作用发挥到最大,并确保它是成功的?那么今天小编跟您聊一聊,您的企业 ...

  4. Element ui结合springboot的简单实战

    Eelment UI简单实战 前端开发 1 创建项目,导入element ui(略) 2 大致设计出想要的效果,如下 3 创建包 根据设计的大致模样在项目的components中创建对应的包,方便以后 ...

  5. 反向解析 参数替换 reverse

  6. [bug] SSM项目:Cannot load driver class: com.mysql.jdbc.Driver

    检查pom文件,mysql包部分为: <dependency> <groupId>mysql</groupId> <artifactId>mysql-c ...

  7. Msf--永恒之蓝 ms17_010

    |>>>中华人民共和国网络安全法<<<|警告:请勿用于非法用途,后果自负! 简介 一.概述 永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers ...

  8. Linux 操作系统(二)搜索文件命令find、locate、which、whereis、grep、wc

    以下命令均已在 Kali Linux 下验证. 1.find 命令 --1-- find /usr/share -name test.lst //精准搜索,文件名需要与-name后的内容一模一样包括后 ...

  9. Zabbix 常用术语

    Zabbix 常用术语 1.主机(host) 一台你想监控的网络设备,用IP或域名表示 2.主机组(host group) 主机的逻辑组;它包含主机和模板.-个主机组里的主机和模板之间并没有任何直接的 ...

  10. kubernetes架构及deployment应用(4)

    Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. 一.master节点 Master 是 Kubernetes Cluster ...