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》

相关文章
|
9月前
|
开发框架 API 数据库
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 一)
在前文的描述中,我们构建的页面多为静态界面。如果希望构建一个动态的、有交互的界面,就需要引入“状态”的概念。
|
存储 数据管理 程序员
CATIA V6 二次开发—概述
CATIA V6 二次开发—概述
CATIA V6 二次开发—概述
|
存储 安全 程序员
CATIA二次开发—探讨CATIA单位问题
CATIA二次开发—探讨CATIA单位问题
CATIA二次开发—探讨CATIA单位问题
Revit二次开发—获取并修改指定标高
Revit二次开发—获取并修改指定标高
|
API C# C++
CATIA二次开发—漫谈开发环境
CATIA二次开发—漫谈开发环境
CATIA二次开发—漫谈开发环境
|
C# 开发工具
基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦
基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦
基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦
|
数据库 Windows
艾伟:基于.NET平台的Windows编程实战(三)—— 项目的创建及主界面的设计
第一步:创建一个新的Windows项目 打开VS2005,点击“文件”-->“新建”-->“项目”,在弹出的对话框里,在左边选择“Windows”,在右边选择“Windows应用程序”,并在下面的名称里输入“QuestionnaireSystem”,选择相应的保存位置后,点“确定”,如下图3-1所示:                                  图3-1  这样一个新的Windows项目就创建好了。
728 0
|
数据库 Windows
艾伟_转载:基于.NET平台的Windows编程实战(三)—— 项目的创建及主界面的设计
第一步:创建一个新的Windows项目 打开VS2005,点击“文件”-->“新建”-->“项目”,在弹出的对话框里,在左边选择“Windows”,在右边选择“Windows应用程序”,并在下面的名称里输入“QuestionnaireSystem”,选择相应的保存位置后,点“确定”,如下图3-1所示:                                  图3-1  这样一个新的Windows项目就创建好了。
785 0
|
图形学 UED
Unity2018新功能探索|图形渲染、下一代Runtime、众多美工工具!
关于Unity2018Unity2018增强了Unity的核心技术, 让创作者能够充分发挥自身才智,进行更有效协作。探索Unity广告如何获取新的用户利用Unity Ads全球广告网络推广游戏,坐拥广大新玩家访问高级游戏娱乐内容10亿以上的独立设备玩家触手可及在正确场合适时获取目标玩家,即玩家参与度最高时创作者的工作空间Unity Editor是艺术家、设计师、开发者和其他职业人员的创意中心,有2D 、3D场景设计工具, 故事和电影, 灯光, 音响系统,精灵管理工具,还有粒子特效和功能强大的dopesheet 动画系统。
1899 0
|
存储 传感器 API
C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.)
原文:C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.
1546 0