CATIA V6二次开发——Automation之对象
Automation之对象
- 1. 对象(Object)
- 1.1 聚合关系
- 1.2 抽象对象(Abstract object)
- 1.3 集合(Collection)
- 1.4 AnyObject
1. 对象(Object)
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(”")。
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");
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());
运行结果为:
《CATIA VBA二次开发入门与提高》一文中讲到 “说明:oHybridShapePoint.Parent 返回的是 HybridShapes 对象(对象类型为 Collection ), oHybridShapePoint.Parent.Parent 返回点所在的几何图形集对象。” 但本人测试后发现,Parent后并没有Parent的属性。不知何解,有知道的大佬可否帮我解惑。
欲知Automation之属性介绍,且听下回分解
CATIA V6二次开发——Automation之对象相关推荐
- CATIA V6二次开发——Automation之属性和方法
1.Automation之属性 属性是描述一个对象某个方面特性的值,这个值可能是对象,也可能是普通数据类型(整数.实数.字符串等). 比如 CATIA 中一个通过三个坐标值创建的点(HybridSha ...
- CATIA V6二次开发——遍历UDF下的元素及参数
在UDF实例化的过程中往往将UDF实例化至几何图形集或者几何体中,每个UDF可能不止输出一个对象和参数,那么如何获取UDF附带输出的元素和参数,代码如下: //获取几何图形集下的UDF //方法一:利 ...
- CATIA V6二次开发——用VB脚本实现布尔运算
VB脚本编辑器在KDI模块中,可以利用VB语言实现一些知识工程阵列无法实现或实现起来比较麻烦的功能.以下为体积布尔运算的实现脚本. VB脚本体积布尔运算 Dim editor1 As Editor S ...
- CATIA V6二次开发——关于测量
测量直线长度 obj.Compute(); //测量前必须先重载一次 MeasurableService measurableService = (MeasurableService)ActiveEd ...
- CATIA CAA 二次开发资料(PDF).rar
05.16.02.MapInfo_MapX_Mobile_5.0-CYGiSO.zip aiss902.rar AutoNest_v1.6_for_AutoCAD.rar Catia CAA 编程示范 ...
- CATIA CAA二次开发专题(一)------明知山有虎
开局:进军一个新领域 最近接到公司新的开发任务:基于DASSAULT CATIA CAA的二次开发,完成一个焊缝的生成和管理插件. 长期进行CATIA的授权管理软件开发,但是一直没有进行过CATI ...
- CATIA Drawing 二次开发
CATIA Drawing 二次开发 解决零件投影 自动套图框 自动编号 自动投影的问题 using System; using System.Collections.Generic; using S ...
- NX二次开发-UFUN设置对象(点线面体)的颜色UF_OBJ_set_color
NX二次开发-UFUN设置对象(点线面体)的颜色UF_OBJ_set_color NX9+VS2012#include <uf.h> #include <uf_obj.h> # ...
- CATIA CAA二次开发视频教程 CAA资料
CATIA CAA二次开发视频教程 CAA资料教程-560分钟 链接:https://pan.baidu.com/s/1Sa2vGcIkoaZYQWdMN7ombg 提取码:yn4a
最新文章
- ps图片边缘淡化接近背景色_7招让你抠图不再犯愁之PS抠图技巧大合集!
- SAP MM 初阶之供应商寄售采购模式下ERS功能的测试
- Linux驱动编程 step-by-step (九)字符设备模拟pipe的驱动程序
- 可以方便的将SQL语句的执行结果显示成表格结果的JAVA类,可以用于不同的数据显示
- [思]刻意练习是不是这样的
- 简明Linux命令行笔记:nl
- 1032. Sharing (25)
- Hershell:跨平台反向Shell生成器
- iOS开发之仿照LinkedIn登录界面效果
- c# splitContainer控件
- 删除word空白页的6钟方法
- 打印机共享计算机密码,打印机共享需要密码怎么办?
- python中的exifread库只要一张图片就能获取你的精确位置
- Excel催化剂开源第35波-图片压缩及自动旋转等处理
- 数字IC设计的第一步——Synopsys EDA Tools的安装
- Computer Vision—计算机视觉 (一)
- 详解STM32中的ADC
- 2018第二十二届软博会将于6月在京拉开帷幕
- 数据安全与隐私保护要点整理
- 阿里python认证_集成阿里云滑动验证(python)