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. Spring Eureka的使用入门

    Eureka调度服务: Gradle依赖包: 基础框架依赖配置核心代码: buildscript { repositories { mavenCentral() } dependencies {cla ...

  2. vue数据双向绑定的原理、虚拟dom的原理

    vue数据双向绑定的原理https://www.cnblogs.com/libin-1/p/6893712.html 虚拟dom的原理https://blog.csdn.net/u010692018/ ...

  3. 【算法笔记】B1012 数字分类

    1012 数字分类 (20 分) 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A​1​​ = 能被 5 整除的数字中所有偶数的和: A​2​​ = 将被 5 除后余 1 的数字 ...

  4. P3332 [ZJOI2013]K大数查询

    传送门 注意操作 $1$ 是在区间的每个位置加入一个数,不是加上一个值 相当于每个位置维护的是一个集合 显然树套树 一开始想的是区间线段树套权值线段树 发现这样询问区间第 $K$ 大时就要先二分答案再 ...

  5. C++ 构造函数与默认构造函数

    构造函数:C++用于构建类的新对象时需要调用的函数,该函数无返回类型!(注意:是“无”! 不是空!(void)). 默认构造函数:未提供显式初始值时,用来穿件对象的构造函数. 以上是二者的定义,但是单 ...

  6. linux下解压rar文件

    由于,linux系统内置没有这个包需要,我们用源码,添加到系统 Linux下rar unrar的安装 以3.8.0版本为例,如果是64位平台,执行以下命令,也可以去官方网站:)下载最新版:wget h ...

  7. [转] iOS开发者的Weex伪最佳实践指北

    [From] http://www.cocoachina.com/ios/20170601/19404.html 引子 这篇文章是笔者近期关于Weex在iOS端的一些研究和实践心得,和大家一起分享分享 ...

  8. (转)关于INF为0x3f3f3f3f

    转自https://blog.csdn.net/jiange_zh/article/details/50198097 在算法竞赛中,我们常常需要用到一个“无穷大”的值,对于我来说,大多数时间我会根据具 ...

  9. centos 7 ssh登录安全问题

    2018-10-11 1.ssh禁止root远程登录 修改ssh配置文件/etc/ssh/sshd_config vim /etc/ssh/sshd_config PermitRootLogin ye ...

  10. webAPI过滤器返回数据加密

    项目需求: 接口返回的数据,存在一些敏感信息,不希望其他用户看到,将Data进行加密传输 代码如下: public class EncryptDataFilterAttribute : ActionF ...