CATIA作为CAD/CAE/CAM/PDM一体化的软件,广泛用于航空航天、汽车、船舶及电子工业,尤其在航空航天业,有八成以上厂商使用CATIA的市场[11]。然而由于使用习惯和使用的侧重点不用,功能再强大的软件也不可能同时满足各类用户的需求,因此,对CATIA进行二次开发已经受到国内外许多科研院所及高校的重视[12]。CATIA二次开发的过程和意义可用图3-1来表示。通过第三方开发工具对CATIA进行二次开发,可以开发出针对某一行业,甚至针对某一用户的特定模块,以方便该行业用户使用,是对CATIA功能的深入挖掘和拓展。

第三方开发工具

VB、VC++...

通用CATIA软件

新的功能模块

CATIA二次开发主要有两种方法,一种是采用CAA  C++技术,另一种是采用Automation技术。

CAA(Component Application Architecture)是CATIA的一套C++函数库,该函数库在CATIA运行时加载,用户可通过RADE模块在VC++编程环境下编写程序,与CATIA进行通信。这种方法可进行最有效率的程序开发,但入门困难,在国内这方面的技术资料比较少见。

Automation技术是建立在COM基础之上,其核心技术是允许一个应用程序操作另一个应用程序。Automation技术并不是直接获取及处理数据,而是间接的通过暴露的对象和属性,利用对象的方法和属性来获取、设置及处理数据。这种方法功能限制比较大,但入门比较容易。

基于上述两种开发方法的特点和本次毕业设计任务难度,本文选择使用Automation方法对CATIA进行二次开发。由于CATIA宏录制生成的VBScript代码稍做修改就能在VB环境下运行,为编程提供了很大的方便,所以本文选用的开发环境是Visual Basic 6.0。

VB 6.0环境下的CATIA二次开发

在CATIA Automation中所有数据都被封装成对象的形式,并形成树形结构,如图3-2,这样就可以通过根对象对所有的其他对象进行访问。图3-2中,Application对象是根对象,通过这个对象的Documents,Windows和SystemService等属性就可以访问CATIA所有的对象。

本文研究中进行的CATIA二次开发主要涉及到CATIA的基本操作和零件对象下的各种属性、方法的操纵。CATIA的基本操作主要是通过几个API(Application Programming Interface)对CATIA进行文件操作,视图操作等。零件操作主要是进行CATIA实体建模,如草绘、约束、实体等操作。

要对CATIA进行操纵,首先是要连接到他的COM接口,主要有GetObject和CreateObject两种方法,即:

Dim CATIA As Object

On Error Resume Next

‘如果CATIA启动,用GetObject连接到CATIA

Set CATIA = GetObject(, "CATIA.Application")

‘如果CATIA没有运行,则先用Create Object启动CATIA

If Err.Number <> 0 Then

Set CATIA = CreateObject("CATIA.Application")

CATIA.Visible = True

End If

On Error GoTo 0

通过这段代码,程序即可访问到CATIA,如果CATIA没有启动,则程序先启动CATIA,再对CATIA进行访问。

操纵零件文档的一般步骤如图3-3所示。

Document对象

Add()方法

获取Application对象

获取Documents对象

获取Part对象

获取构造类

ShapFactory

建模

获取OriginElements对象

获取实体集合Bodies

添加Body对象

Part是零件文档最上层的对象,如图3-4所以,通过它可以操纵零件文档,可以对参考系、草绘、实体特征等属性进行操作,编程实现CATIA的实体建模。

Part

Bodies

ShapeFactory

OriginElements

Body

Sketches

Part对象下的几个属性下均含有较多函数,此处不一一详述,只对一些常用函数作简单介绍。Sketches属性下含有Factor2D草绘元素构造器,得到该对象后,可以使用它的创建方法来创建平面曲线特征。最常用的方法有:CreatePoint、CreateLine、CreateCircle和CreatClosedCircle,此处以CreateCircle为例介绍其用法。

CreateCircle( double iCenterX,

double iCenterY,

double iRadius,

double iStartParam,

double iEndParam ) As CATIACircle2D

参数说明:iCenterX,iCenterY:圆弧中心坐标;

iRadius:圆弧半径

iStartParam:圆弧起始圆心角,以弧度表示。

iEndParam:圆弧终点圆心角,以弧度表示。

该函数返回Circle2D类型的圆弧。如下代码将创建以(5,15)为圆心,从-90到+90,半径为30mm的半圆:

Dim PI as Double

PI=3.14159

Dim Circle as Circle2D

Set Circle=Factory2D.CreateCircle(5,15,30,-PI/2,PI/2)

ShapeFactory是实体构造器,用它可以完成绝大部分的实体特征的创建,如Pad、Pocket等。以下代码将名为Sketch1的草绘特征做一个Pad特征,高度为20mm。

Dim SF as ShapFactory,Pad1 as Pad

Set SF=Part1.ShapFactory.

Set Pad1= SF.AddNewPad(Sketch1,20)

其他函数此处不再做详细介绍,读者可参考CATIA V5自带的Automation文档。

VB6.0环境下的CATIA二次开发简介的更多相关文章

  1. 搭建eclipse环境下 Nutch+Mysql 二次开发环境

    最近看了下Nutch,目前Nutch最新版本2.3.1,支持Hbase.MongoDB等存储,但在搭建和测试过程中发现对Mysql 的支持好像有点问题. 后来将Nutch版本改为2.2.1.基于Nut ...

  2. JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误

    问题一:出现控制台坏的响应错误一Bad request 控制台出现错误如下: Bad Request request: http://hostIP:8983/solr/update?wt=javabi ...

  3. Ubuntu环境下Nutch1.2 二次开发(添加中文分词)

    前提nutch1.2已部署到eclipse中 详见:http://www.cnblogs.com/cy163/archive/2013/02/19/2916419.html 1 部署IKAnalyze ...

  4. [VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”

    在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqli ...

  5. Windows-Server-2008、IIS7.0环境下配置伪静态化

    在Windows-Server-2008.IIS7.0环境下配置伪静态化                首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为 ...

  6. 使用zipkin2在SpringCloud2.0环境下追踪服务调用情况

    1.目的: 使用zipkin2.0在Spring Cloud 2.0环境下,追踪服务调用情况. 2.所需组件: zipkin2.0,Spring Cloud 2.0,Eureka Server,Eur ...

  7. Catia 二次开发资料(转)

    Catia 二次开发 CATIA V5在开发之初就遵循面向对象的设计思想(OO),构建了完全基于组件的体系结构(PPR: Products,Process,Resource),有效地解决了维护.管理. ...

  8. 转 Visual C++6.0 与matlab联合编程(2)----Visual C++6.0 环境下编译和调试MEX文件

    我的最初想法是利用matlab的mex命令调用C++程序生成动态链接库的,但是测试程序(文中另附)通过了,自己的实际应用程序却没有过.还是把方法贴在这儿,以便自己以后进行整理. http://shij ...

  9. 新闻实时分析系统 基于IDEA环境下的Spark2.X程序开发

    1.Windows开发环境配置与安装 下载IDEA并安装,可以百度一下免费文档. 2.IDEA Maven工程创建与配置 1)配置maven 2)新建Project项目 3)选择maven骨架 4)创 ...

随机推荐

  1. XSS攻击的防御

    XSS攻击的防御 XSS 攻击是什么 XSS 又称 CSS,全称 Cross SiteScript,跨站脚本攻击,是 Web 程序中常见的漏洞,XSS 属于被动式且用于客户端的攻击方式,所以容易被忽略 ...

  2. 洛谷 P1477 [NOI2008]假面舞会

    题目链接 题目描述 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会. 今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具.每个面具都有一个编号,主办方 ...

  3. Restrictions.like() 模糊查询,以及使用DetachedCriteria查询的一般用法

    Restrictions.like() 模糊查询,以及使用DetachedCriteria查询的一般用法 2016-10-10 16:52:38                             ...

  4. CSL 的字符串(思维+STL操作)

    链接:https://ac.nowcoder.com/acm/contest/551/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048 ...

  5. Shiro登录的故事

    从前,有一个subject,他有一个UsernamePasswordToken的实例,也就是token: 他准备登录,于是调用subject.login(AuthenticationToken tok ...

  6. vue 调用常量的config.js文件

    我遇到问题,就是有很多常量需要应用的项目里面.所以需要打算设置一个config.js文件 1.填写config.js 文件 //常量配置 //快递公司名单 对应的页面为: src/pages/othe ...

  7. 关于表格合并span-method方法的补充(表格数据由后台动态返回)

    之前写了一些关于element-ui表格合并的方法,不过用的数据都是确定的数据(死数据),但是很多时候我们的数据都是通过后台获得的,数据不稳定,这个时候使用表格合并就需要先处理一下数据,先看一下一种很 ...

  8. PHP创建自己的Composer包方法

    原文地址:http://www.jb51.net/article/137923.htm

  9. logrtate 切割详解

    Logrotate是Linux下一款日志管理工具,可用于日志文件的转储(即删除旧日志文件,创建新日志文件).可以根据日志大小或者按照某时段间隔来转储,内部使用cron程序来执行.Logrotate还可 ...

  10. 【ExtJS】关于alias和xtype

    alias 在api里的解释为:别名 类名称简短的别名列表.多数用于定义xtypes Ext.define('MyApp.Panel', { extend: 'Ext.panel.Panel', al ...