CATIA二次开发—参数那点事

简介: CATIA二次开发—参数那点事

一、前言


继《CATIA二次开发—遍历结构树》之后,上周停更了一次 CATIA 二次开发系列,一方面是正好那个时间点,走马观花式地读完了一篇英文文献,所以选择乘热先推送—《集成NLP和逻辑推理的自动合规检查平台》;另外一方面,笔者也在思考下面的章节如何安排,因为能拎出来讲的基础知识点不多了,后面有时间的话考虑出一些实战类的视频。


其实对于二开而言,知识点比较零散,对其学习的本质是针对软件 API 的实践总结以及少量的代码编写技巧。首先来谈 API 的实践总结。没有其他捷径,就是代码写得越多,总结得越多,对 API 功能的理解也就越深刻。当你拿到一个需求,你能第一时间反应出:这个能不能通过 API 来实现?如果能,那么实现的思路大概是什么,主要用到哪些 API ;如果不能,限制在哪,有没有曲线救国的可能?这些潜意识都是长期实践积累和总结才具备的,而且这个过程别人替代不了。就如笔者一直致力于分享自己的开发经验,其实也是督促自己进一步总结归纳,在自己受益的同时,也能让读者们少走一些弯路,能够更快地入门 CATIA 二次开发,实现所需的定制功能。


其次是少量的代码编写技巧。这里的“少量”是笔者的个人观点,若有不妥,请别当真。就笔者接触到的二次开发项目而言,开发过程中,代码编写上的困难不多见,毕竟是面向百度和谷歌编程的老司机 了🚗 ,难点其实主要集中在业务逻辑层面,尤其是当产品经理也吃不准逻辑的时候就更难了。所以上学那会我就经常调侃:业主并不清楚自己要什么,但当你写出一个程序给他的时候,他才知道自己不要什么。苦了写代码的人被迫做排除法😂。


好了,前言扯得有点多,抓紧进入正题。本期内容重点是讲 CATIA 中的参数,包括参数的创建、删除、读取和写入一整套工作流。


二、方法及步骤

2.1 创建参数集/参数

2.1.1 新建参数


20210307092527400.png

首先 CATIA API 中用于创建参数的方法位于 Parameters 对象中(图1),所以想要新建参数就必须拿到 Parameters 对象实例。那么怎么去拿这个实例呢,这取决于你想要在哪新建参数(图2),例如是零件级别的参数,亦或者是几何图形集中的参数,它们对应不同的对象实例获取方法(表1)。

2021030709260710.png


表1.获取 Parameters 对象实例

Where you create parameter How to get the Parameters instance
零件级别 activePart.Parameters
几何图形集内部 activePart.Parameters.SubList(hybridBody, true)

表2 为不同类型参数新建的具体方法

表2.新建不同类型的参数

参数类型 方法
长度 CreateDimension(“长度”,“LENGTH”,2000)
角度 CreateDimension(“角度”, “ANGLE”, 1.8)
整数(Int) CreateInteger(“整数”,5)
实数(Real) CreateReal(“实数”,10)
字符串(String) CreateString(“字符串”,“hhh”)
布尔(Bool) CreateBoolean(“布尔”,false)
列表 CreateList(“列表”)

2.1.2 新建参数集

如果我们对参数层级有要求的话,可能就需要新建参数集来对参数进行管理,例如下图3呈现了一个参数集嵌套参数集的结构层次。


20210307092624279.png

Parameters paras = activePart.Parameters;
// 在零件参数集中新建“test”参数集
ParameterSet testParaSet = paras.RootParameterSet.ParameterSets.CreateSet("test");
// 在“test”参数集中新建参数
testParaSet.AllParameters.CreateBoolean("IsSuccess", false);

2.2 获取参数集/参数

2.2.1 获取参数集

同样以图3为例,如果想要获取 “test” 参数集,代码如下:

Parameters paras = activePart.Parameters;
ParameterSet childParaSet = paras.RootParameterSet.ParameterSets.GetItem("test) as ParameterSet;

2.2.2 获取参数及其值


获取参数与创建参数一致,均通过 Parameters 对象完成,并同样采用GetItem方法,代码如下:

划重点:activePart.Parameters 所拿到的参数并不只是零件中 Parameters 中的参数,而是零件中的所有参数,包括几何图形集中的几何参数等等


// 此方法虽也能获取到对应的参数,但毕竟会搜索零件中所有参数来找到对应的参数,会耗费计算资源
Parameter para1 = (Parameter)activePart.Parameters.GetItem("test1");
// 合理的获取方式
Parameters allParas = activePart.Parameters;
ParameterSet paras = allParas.RootParameterSet.AllParameters;
Parameter para1 = (Parameter)paras.GetItem("test1");
// 获取参数值
string value = para1.ValueAsString();

🔔另一个需要注意的是:ValueAsString() 方法在获取有量纲(单位)的参数值时,会一同把单位也读取出来。例如 某参数 = 100 mm,此时 value = “100mm”。

对此笔者提供一个解决方案,并非最优,仅供参考。


// 思路:对于有量纲参数,使用正则表达式,剔除非数字字符,
string[] items = para1.ValueAsString().ToCharArray();
// 这里先把第一个字符加进来,避免是负数时,负号被剔除
string realValue = items[0];
// 从1开始循环
for ( int i = 1; i < items.Count; i++ )
{
    if (Regex.IsMatch(items[i].ToString(),"[0-9]"))
    {
        realValue += item.ToString();
    }
}

2.3 删除参数集/参数

删除参数的应该不需要多讲,只要能拿到参数集或者参数,然后将其添加至选择集,即可删除。

sel.Clear();
sel.Add(para1);
sel.delete();

2.4 修改参数

参数的修改包括修改参数名和参数值,分别对应不同的方法,代码如下:

// 修改参数名称
para13.Rename("changedName");
// 修改值
para13.ValuateFromString("111");
// 可以带单位赋值,以确保不受软件系统单位设置的影响
para13.ValuateFromString("100mm");

三、参考资料

《3DEXPEROENCE Automation Help》

相关文章
|
存储 Cloud Native Linux
C++ vector元素类型为什么不能是引用
C++ vector元素类型为什么不能是引用
|
5月前
|
人工智能 算法 API
CAD二次开发的外包流程
国内CAD二次开发正加速迈向AI驱动的生成式设计时代。本文详解AutoCAD/中望/浩辰等平台的技术选型(C++/C#/API)、标准化外包流程、AI集成(生成设计、图纸识别)、Web CAD新趋势及费用周期参考,助力企业高效实现国产替代与智能升级。(239字)
|
7月前
|
JavaScript API C#
AutoCAD 的二次开发
AutoCAD二次开发是通过API(如.NET/C++/LISP/JS)扩展其功能,实现自动绘图、参数化建模等;2026年主流为“桌面+云端”混合模式,推荐C#/.NET为主栈,兼顾性能与效率,支持跨版本适配与Web集成。(239字)
|
开发框架 .NET 程序员
C# 去掉字符串最后一个字符的 4 种方法
在实际业务中,我们经常会遇到在循环中拼接字符串的场景,循环结束之后拼接得到的字符串的最后一个字符往往需要去掉,看看 C# 提供了哪4种方法可以高效去掉字符串的最后一个字符
1520 0
|
人工智能 自然语言处理 机器人
谷歌AI Gemin怎么使用?Gemini国内使用指南!(2024.8.19)
从自然语言处理(NLP)到对话生成,AI语言模型已经成为科技界的一个重要组成部分。在众多杰出的AI语言模型中,Gemini凭借其卓越的性能和广泛的应用而脱颖而出。作为谷歌旗下的多模态AI巨头,Gemini融合了最先进的语言处理技术,为用户提供了无与伦比的语言理解和生成能力。
|
存储 监控 安全
裸金属服务器,云用户的新体验
**摘要:** 裸金属服务器是结合物理服务器硬件优势和云服务虚拟化功能的设备,提供专用资源、无性能损失且易于扩展。它支持自动化发放、云硬盘、VPC网络和生命周期管理,适用于核心业务、高性能计算和大数据等。产品特点是快速发放(5分钟内)、共享卷支持、高安全性和灵活部署。常见客户场景包括合规与稳定性需求、低成本资源管理、定制化硬件需求。流行原因包括物理机的安全感、高性能要求、严格安全监管、克服传统托管弊端及适应混合计算场景。
CATIA二次开发—遍历结构树
CATIA二次开发—遍历结构树
CATIA二次开发—遍历结构树
|
前端开发 JavaScript 开发者
如何在Vite和Webpack之间选择合适的构建工具?
【4月更文挑战第14天】选择Vite或Webpack取决于项目需求、团队熟悉度和场景。Vite适合快速开发,小到中型项目,Vue.js技术栈,有较简单的配置和快速冷启动。而Webpack在大型项目中占优,提供深度优化,丰富的插件生态系统,适合复杂构建需求和React项目。考虑因素还包括学习曲线和社区支持,最佳工具应满足项目当前及未来需求。
506 2
|
C语言 程序员
【C语言基础教程】内存的申请和释放(malloc、free、realloc、calloc)
【C语言基础教程】内存的申请和释放(malloc、free、realloc、calloc)
3598 0
【C语言基础教程】内存的申请和释放(malloc、free、realloc、calloc)

热门文章

最新文章