VB6.0环境下的CATIA二次开发简介
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二次开发简介的更多相关文章
- 搭建eclipse环境下 Nutch+Mysql 二次开发环境
最近看了下Nutch,目前Nutch最新版本2.3.1,支持Hbase.MongoDB等存储,但在搭建和测试过程中发现对Mysql 的支持好像有点问题. 后来将Nutch版本改为2.2.1.基于Nut ...
- JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误
问题一:出现控制台坏的响应错误一Bad request 控制台出现错误如下: Bad Request request: http://hostIP:8983/solr/update?wt=javabi ...
- Ubuntu环境下Nutch1.2 二次开发(添加中文分词)
前提nutch1.2已部署到eclipse中 详见:http://www.cnblogs.com/cy163/archive/2013/02/19/2916419.html 1 部署IKAnalyze ...
- [VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”
在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqli ...
- Windows-Server-2008、IIS7.0环境下配置伪静态化
在Windows-Server-2008.IIS7.0环境下配置伪静态化 首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为 ...
- 使用zipkin2在SpringCloud2.0环境下追踪服务调用情况
1.目的: 使用zipkin2.0在Spring Cloud 2.0环境下,追踪服务调用情况. 2.所需组件: zipkin2.0,Spring Cloud 2.0,Eureka Server,Eur ...
- Catia 二次开发资料(转)
Catia 二次开发 CATIA V5在开发之初就遵循面向对象的设计思想(OO),构建了完全基于组件的体系结构(PPR: Products,Process,Resource),有效地解决了维护.管理. ...
- 转 Visual C++6.0 与matlab联合编程(2)----Visual C++6.0 环境下编译和调试MEX文件
我的最初想法是利用matlab的mex命令调用C++程序生成动态链接库的,但是测试程序(文中另附)通过了,自己的实际应用程序却没有过.还是把方法贴在这儿,以便自己以后进行整理. http://shij ...
- 新闻实时分析系统 基于IDEA环境下的Spark2.X程序开发
1.Windows开发环境配置与安装 下载IDEA并安装,可以百度一下免费文档. 2.IDEA Maven工程创建与配置 1)配置maven 2)新建Project项目 3)选择maven骨架 4)创 ...
随机推荐
- python---day14( 内置函数二)
内置函数二一:匿名函数 lambda函数 lambda 表示匿名函数,不需要用def 来申明. 语法: 函数名=lambda 参数:返回值 ----〉 案例:f=lambda n:n*n 例子01: ...
- 洛谷 P3388 【模板】割点(割顶)
题目链接 题解 今天复习了一下割点. 关于\(tarjan\)这里不多讲 \(dfn\)和\(low\)数组的定义想必大家都知道 仔细观察一下,可以发现 假设便利\(u->v\)这条边 如果 \ ...
- HDU6312 Game(博弈,拿出本数与这个数的除数)
题意:A和B玩游戏 , 给出1 ~ n 的集合 ,每个人可以拿出一个数 , 这个数的除数也被拿出 , A先开始 , 没有数拿的人就输 , 问A赢不赢 分析:很有意思的一道题目 ///假设2 ~ n A ...
- MongoDB基本语句
1.创建数据库 use 库名 2.查看所有库 show dbs 3.定义一个对象变量,下面挂着数据 4.col 是集合名,如果该集合不在该数据库中, MongoDB 会自动创建该 ...
- 4GLTE@NB-IOT
参考:https://www.cnblogs.com/pangguoming/p/9755916.html NB-IOT特点:在4G基础上发展而来,覆盖广,海量接入,成本低低功耗:不适合应用情况:大数 ...
- python3初探
官方网站:https://www.python.org/ 类库大全:https://pypi.python.org/pypi 基础类库:https://docs.python.org/3/libr ...
- 案例42-使用ajax获取crm中的客户列表
1webcontent部分 1 修改menu.jsp代码 2 jsp/customer/list.jsp代码 <%@ page language="java" content ...
- linux下Oracle 相关命令
#注意:例子中的oralce命令在/home/oracle/oracle/product/10.2.0/db_1/bin目录.#你可以自己修改成自己的目录. A.#dbstart //启动数据库 #d ...
- plsql 连接 虚拟机Linux下的Oracle数据库 失败
plsql 连接 虚拟机Linux下的Oracle数据库 失败2017年09月09日 09:10:23 守望dfdfdf 阅读数:187 标签: oraclelinux 更多个人分类: 工具 软件编辑 ...
- 【学习笔记】关于DOM4J:使用DOM4J解析XML文档
一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org. ...