CATIA V6二次开发——Automation之对象

1. 对象(Object)

image-20210325150154072

CATIA Automation 中采用对象结构图和文字表述的方式来描述对象(Objects)、对象的方法和属性以及对象之间的关系,青色表示普通对象,黄色表示对象集合,红色表示抽象对象。Automation的开发方式中,绝大部分的CATIA操作功能都被封装成.NET类,用户可以通过丰富的API函数调用这些类,利用高级编程语言实现复杂的人机交互功能,也能做出丰富的界面,而且完全免费,开发成本较低。

1.1 聚合关系

​如图所示,对象的聚合描述关系我们可以这样理解,Application对象下聚合了一个Editors集合对象,Editors下又聚合了一个Editor对象,Editor对象下又聚合了一个Anyobject抽象对象。两个聚合对象之间,下一级对象是上一级对象的属性,编写代码时可通过 “.” 操作符实现。

Editor ed = CATIA.ActiveEditor;
Part ActivePart = (Part)ed.ActiveObject;

1.2 抽象对象(Abstract object)

​对象结构图中,带箭头的实线表示继承关系,下级对象继承了上级对象所有的属性和方法。在Automation API 中只有抽象对象才能被继承,操作时也是对其派生的下级对象进行操作。比如 MeasureService对象继承自 Service对象,用来进行测量操作。 在二次开发中不能创建抽象对象(如 Service)的实例,只能创建其派生对象(如 MeasureService)的实例。

Service 分为 Session-level (下图左) 和 Editor-level (下图右),Session-level 的Service 包含有任何一种 PLM 类型以及在没有任何激活的 PLM 根对象时的操作,而 Editor-level 的 Service 应用于指定好的 PLM 根对象(root object)。 两种 Sevice 的获取方式不同,分别为 GetSessionService(" “) 和 GetService(”")。

image-20210325152214545

Session-level services备注(GetSessionService 方法的识别符)
MATPLMService与材质相关的服务(MATPLMService)
OlpTranslatorHelper与机器人编程相关的服务(OlpTranslatorHelper)
PnOService获取 person(PnOService)
PLMNewService创建 PLM 根对象(PLMNewService)
PLMOpenService打开 PLM 根对象(PLMOpenService)
PLMPropagateService保存编辑器更改(PLMPropagateService)
PLMScriptService处理数据库中存储的脚本(PLMScriptService)
ProductSessionService整合 Shape3D 对象:aggregates a collection of Shape3D objects(ProductSessionService)
SearchService服务器搜索(Search)
SimInitializationService初始化仿真(SimInitializationService)
SIMPLMService管理 SimulationReference 和其他仿真对象(SimPLMService)
VisuServices可视化服务:图层 layers、图层过滤器 layers filters、窗口 windows 和相机 cameras(VisuServices)
Editor-level services备注(GetService 方法的识别符)
MeasurableService返回测量曲面和曲线的对象(MeasurableService)
MeasureService返回测量曲面和曲线的对象(MeasureService)
PLMProductService返回 Editor 的根对象(PLMProductService)
RfgService管理参照平面和参照面(RfgService)
SectionService管理当前 review 中的 section 剖面对象(SectionService)
SrsInstantiateService管理空间参考系统对象 Space Reference System objects (SrsInstantiateService)
StrService适用于结构对象(StrService)

1.3 集合(Collection)

​ Collection 对象可以理解为一个存放同类对象的容器,一般具有复数形式的名称,比如Bodies、HybridBodies等,可以在这个容器中新增、查找子对象。Collection常用的方法和属性见下表:

方法说明
Add()新增一个对象
Count()返回该集合中对象的个数
Item(Index)通过下标查找集合中的某个对象
GetItem(Name)通过名字查找集合中的某个对象
GetType()获取当前实例的类型
Name获取该集合的名称

注:Item(Index)一般通过下标查找对象,Index为整数,常用的几何图形集等子元素下标索引从1开始。实际编程过程中发现该方法也可用于名称字符串的查找,比如Item(“Name”),此法可直接跨层级查找某对象。如下图,从层级1的HybridShapes集合就可以直接Item(“Point”)到目标Point;但是此法只针对层级1下只存在唯一名称的元素,若存在多个同名元素,默认找到第一个对象。GetItem(Name)则不能跨层级使用,如果要找到下图的Point,则必须通过层级1找到层级2,层级2找到层级3,以此类推,在层级4下找到Point。

//在Part下新建几何图形集
HybridBody hb1 = ActivePart.HybridBodies.Add();
hb1.set_Name("层级1");
//在hb1下新建几何图形集
HybridBody hb2 = hb1.HybridBodies.Add();
hb2.set_Name("层级2");
//在hb2下新建几何图形集
HybridBody hb3 = hb2.HybridBodies.Add();
hb3.set_Name("层级3");
//在hb3下新建几何图形集
HybridBody hb4 = hb3.HybridBodies.Add();
hb4.set_Name("层级4");
//在层级4下创建一个点
HybridShapePointCoord testPoint = hsf.AddNewPointCoord(0,0,0);
testPoint.set_Name("Point");
//直接在层级1下查找testPoint
HybridShape p1 = hb1.HybridShapes.Item("Point");
//在层级4下查找testPoint
HybridShape p2 = (HybridShape)hb4.HybridShapes.GetItem("Point");

image-20210325155359444

1.4 AnyObject

​ AnyObject 是Automation 中的一个抽象对象,它可以代表除了 Collection 对象和参考对象之外的任何对象。

属性/方法说明
Application返回CATIA Application对象,即CATIA根对象
Name返回对象名称(字符串)
Parent返回父对象
GetItem()通过名字查找到指定对象
get_Name()获取对象名称
set_Name()为对象命名

通过 Parent 方法可以获取元素的父对象。

HybridBody pahb = (HybridBody)p1.Parent;
MessageBox.Show(pahb.get_Name().ToString());

运行结果为:

image-20210325163516499

《CATIA VBA二次开发入门与提高》一文中讲到 “说明:oHybridShapePoint.Parent 返回的是 HybridShapes 对象(对象类型为 Collection ), oHybridShapePoint.Parent.Parent 返回点所在的几何图形集对象。” 但本人测试后发现,Parent后并没有Parent的属性。不知何解,有知道的大佬可否帮我解惑。
image-20210325163819685
欲知Automation之属性介绍,且听下回分解😄

参考资料:
1.《CATIA VBA二次开发入门与提高》
2.《CATIA二次开发—API梳理》——硬核小青年
3. DSYAutomation.chm

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值