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》

相关文章
|
小程序 JavaScript
【微信小程序】-- 自定义组件 - behaviors(三十九)
【微信小程序】-- 自定义组件 - behaviors(三十九)
|
人工智能 自然语言处理 前端开发
AI 绘画Stable Diffusion 研究(十)sd图生图功能详解-精美二维码的制作
AI 绘画Stable Diffusion 研究(十)sd图生图功能详解-精美二维码的制作
1120 1
|
6月前
|
人工智能 JSON 自然语言处理
31.3K star!开源免费本地AI神器,一键部署多模态大模型!
LocalAI 是一款革命性的开源AI框架,专为本地化部署设计。它完美复现了OpenAI的API接口,支持运行各类开源大模型(如LLaMA3、Phi-2、Stable Diffusion等),无需GPU即可在普通电脑上实现:
327 0
|
7月前
|
自然语言处理 开发者
DeepSeek全尺寸模型上线阿里云百炼!
DeepSeek全尺寸模型上线阿里云百炼!
236 4
|
11月前
|
移动开发 JavaScript 前端开发
ThreeJs简介
这篇文章介绍了Three.js的基础知识,包括其相对于WebGL的优势以及如何使用Three.js创建基本的3D场景。
540 1
|
JSON 数据格式 C++
使用NlohmannJson写JSON保留插入顺序
使用NlohmannJson写JSON保留插入顺序
325 0
软著干货:阿里云软件著作权申请流程及费用(快速下证)
阿里云软件著作权申请涉及账号注册、实名认证和选择服务。在阿里云官网注册账号,通过实名认证后,选择计算机软件著作权登记服务,如普通359元/件或加急1080元/件。在线填写申请表单,经过阿里云初审、授权提交、打印申请表并邮寄材料。版权中心审查后,20个工作日内可领取证书。详细流程见阿里云百科相关指南。
【Qt】Qt定时器类QTimer
【Qt】Qt定时器类QTimer
287 0
|
存储 数据管理 程序员
CATIA V6 二次开发—概述
CATIA V6 二次开发—概述
CATIA V6 二次开发—概述
|
数据可视化
Visio绘制时间轴、日程安排图、时间进度图的方法
Visio绘制时间轴、日程安排图、时间进度图的方法
567 1