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 ...
随机推荐
- Portswigger web security academy:OAth authentication vulnerable
Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...
- Portswigger web security academy:DOM Based XSS
Portswigger web security academy:DOM Based XSS 目录 Portswigger web security academy:DOM Based XSS DOM ...
- PhpStorm 配置本地文件自动上传至服务器
目的:本地文件夹下的文件实时同步至指定服务器的文件夹,减少代码移植的成本和风险 添加一个SFTP连接 Tools - Deployment - Browse Remote Host 配置连接参数 Co ...
- git的一些常用命令总结
1.拉取代码Git clone "链接名称" 2.新建分支 git checkout -b "分支名称" 3.提交代码步骤 (1)Git status查看项目 ...
- ppt技巧--线条
声明:本文所有截图来源于网易云课堂--<和秋叶一起学PPT>,只做个人复习之用,特此声明! 线条的五种用途:
- JavaScript 中正则匹配时结果不一致的问题
创建示例项目 考察如下场景,我们有个输入框组件,输入时同时进行校验. interface IInputProps { label: string; } function Input({ label } ...
- pytest用法---学习篇1
一.pytest运行规则: pytest可以收集所有以test_*.py文件,Test开头的类,和以test_开头的函数和方法,都能识别成测试用例. 当然也可以改变这个的识别规则 二.常用参数 -k ...
- 《Spring 手撸专栏》第 2 章:小试牛刀(让新手能懂),实现一个简单的Bean容器
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 上学时,老师总说:不会你就问,但多数时候都不知道要问什么! 你总会在小傅哥的文章前言 ...
- 无连接运输:UDP
多路复用和解复用与校验和是UDP唯一能做的事,运输层的协议必须做点什么,什么都没有就不需要这一层了. 为什么要使用UDP 既然有了可靠传输的TCP,为什么还要在udp之上来构件应用呢? 有效载荷大,T ...
- [Python] Tkinter command
例1:创建按钮 import tkinter as tk class App: def __init__(self,root): frame = tk.Frame(root) frame.pack() ...