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之对象相关推荐

  1. CATIA V6二次开发——Automation之属性和方法

    1.Automation之属性 属性是描述一个对象某个方面特性的值,这个值可能是对象,也可能是普通数据类型(整数.实数.字符串等). 比如 CATIA 中一个通过三个坐标值创建的点(HybridSha ...

  2. CATIA V6二次开发——遍历UDF下的元素及参数

    在UDF实例化的过程中往往将UDF实例化至几何图形集或者几何体中,每个UDF可能不止输出一个对象和参数,那么如何获取UDF附带输出的元素和参数,代码如下: //获取几何图形集下的UDF //方法一:利 ...

  3. CATIA V6二次开发——用VB脚本实现布尔运算

    VB脚本编辑器在KDI模块中,可以利用VB语言实现一些知识工程阵列无法实现或实现起来比较麻烦的功能.以下为体积布尔运算的实现脚本. VB脚本体积布尔运算 Dim editor1 As Editor S ...

  4. CATIA V6二次开发——关于测量

    测量直线长度 obj.Compute(); //测量前必须先重载一次 MeasurableService measurableService = (MeasurableService)ActiveEd ...

  5. CATIA CAA 二次开发资料(PDF).rar

    05.16.02.MapInfo_MapX_Mobile_5.0-CYGiSO.zip aiss902.rar AutoNest_v1.6_for_AutoCAD.rar Catia CAA 编程示范 ...

  6. CATIA CAA二次开发专题(一)------明知山有虎

    开局:进军一个新领域 最近接到公司新的开发任务:基于DASSAULT  CATIA  CAA的二次开发,完成一个焊缝的生成和管理插件. 长期进行CATIA的授权管理软件开发,但是一直没有进行过CATI ...

  7. CATIA Drawing 二次开发

    CATIA Drawing 二次开发 解决零件投影 自动套图框 自动编号 自动投影的问题 using System; using System.Collections.Generic; using S ...

  8. NX二次开发-UFUN设置对象(点线面体)的颜色UF_OBJ_set_color

    NX二次开发-UFUN设置对象(点线面体)的颜色UF_OBJ_set_color NX9+VS2012#include <uf.h> #include <uf_obj.h> # ...

  9. CATIA CAA二次开发视频教程 CAA资料

    CATIA CAA二次开发视频教程 CAA资料教程-560分钟 链接:https://pan.baidu.com/s/1Sa2vGcIkoaZYQWdMN7ombg 提取码:yn4a

最新文章

  1. ps图片边缘淡化接近背景色_7招让你抠图不再犯愁之PS抠图技巧大合集!
  2. SAP MM 初阶之供应商寄售采购模式下ERS功能的测试
  3. Linux驱动编程 step-by-step (九)字符设备模拟pipe的驱动程序
  4. 可以方便的将SQL语句的执行结果显示成表格结果的JAVA类,可以用于不同的数据显示
  5. [思]刻意练习是不是这样的
  6. 简明Linux命令行笔记:nl
  7. 1032. Sharing (25)
  8. Hershell:跨平台反向Shell生成器
  9. iOS开发之仿照LinkedIn登录界面效果
  10. c# splitContainer控件
  11. 删除word空白页的6钟方法
  12. 打印机共享计算机密码,打印机共享需要密码怎么办?
  13. python中的exifread库只要一张图片就能获取你的精确位置
  14. Excel催化剂开源第35波-图片压缩及自动旋转等处理
  15. 数字IC设计的第一步——Synopsys EDA Tools的安装
  16. Computer Vision—计算机视觉 (一)
  17. 详解STM32中的ADC
  18. 2018第二十二届软博会将于6月在京拉开帷幕
  19. 数据安全与隐私保护要点整理
  20. 阿里python认证_集成阿里云滑动验证(python)

热门文章

  1. Session.CLIENT_ACKNOWLEDGE
  2. 微信图片翻译技术优化之路
  3. 坎坎坷坷的深度学习之路(三)-Hello world(2)-------MNIST数据集1-MNIST格式
  4. 用友畅捷通T+,现金流量相关档案从一个帐套复制到另个帐套
  5. bboss-elasticsearch--使用/教程/实例
  6. 工作日常记录:整数有符号数除以无符号数的那些事
  7. 局域网搭建IOS应用在线安装环境
  8. 11.1 p值的意义
  9. 电脑按键坏掉之后的解决办法
  10. c语言结构体冒泡排序,c语言结构体冒泡排序求教