CATIA二次开发文件_VB

合集下载

用VB对Catia软件进行简单的二次开发

用VB对Catia软件进行简单的二次开发

用VB对Catia软件进行简单的二次开发
陈振艺
【期刊名称】《轮胎工业》
【年(卷),期】2010(30)12
【摘要】采用具体的程序代码介绍采用Visual Basic(VB)语言对catia软件进行简单二次开发.通过引用相应的库文件,启动Catia软件,在相应草图平面用VB代码创建草图,根据节距数计算模型旋转角度,创建轮胎实体模型,然后采用开槽方法生成胎面花纹.
【总页数】5页(P746-750)
【作者】陈振艺
【作者单位】双钱集团股份有限公司,轮胎研究所,上海200245
【正文语种】中文
【中图分类】TQ336.1;TP311.52;TP391.77
【相关文献】
1.应用VB或VBA对Coreldraw进行二次开发 [J], 杨穗;易捷
2.基于CATIA软件对VBA的支持进行飞机翼面的造型设计 [J], 杨德华;税清才;周喜军
3.对Auto CAD进行二次开发时VBA代码与VB代码间的转换技术 [J], 李燕;高成慧
4.基于CATIA软件对VBA的支持进行曲面设计 [J], 刘程鹏
5.在Excel中使用VBA语言进行二次开发提高阀门井设计效率 [J], 陈向东
因版权原因,仅展示原文概要,查看原文内容请购买。

基于VB的CATIA二次开发流程

基于VB的CATIA二次开发流程

CATIA二次开发文件第一课:CATIA V5自动化及脚本语言结构内容列表:CATIAV5自动化及脚本语言介绍VB、VBScript、VBA之间的区别宏的兼容性、结构及文件进程中的宏2.1运行一个宏2.2在工具栏上添加一个宏外进程的编程3.1 使用VBA或VB 运行外进程例子:从Excel里导出螺钉3.2使用Windows Scripting Host运行外进程3.2.1Windows Scripting Host 下的VBScript例子:“BoltVBScript.vbs”3.2.2Windows Scripting Host 下的JavaScript例子:“BoltJavaScript.js”3.3用HTML运行外进程3.3.1用VBScript在HTML里运行外进程例子:“BoltVBScript.html”3.3.2用JavaScript在HTML里运行外进程例子:“BoltJavaScript.html”1.C ATIA自动化及脚本语言概述通用在Unix和NT平台上无论是在NT平台还是Unix平台上,脚本语言允许你使用宏以一个非常简单的方式来对CATIA V5进行编程。

CATIA V5使用了NT平台下的VB脚本和Unix平台下的BASIC脚本中相同的部分,所以我们在两个平台下可以运行相同的宏。

在NT平台下自动化允许CATIA与其他程序共享对象,如EXCEL,WORD,VISUAL BASIC。

CATIA可以使用WORD/EXCEL对象,反之也相同。

在UNIX平台下将来的CATIA的版本里,CATIA将允许同Java共享自己的对象,这将为Unix平台和NT平台提供完整的兼容性。

CATIA V5 自动化:概述(仅限NT平台)自动化允许在不同的进程之间通讯COM:(对象组件模型):COM是微软公司提出的目的在不同程序中共享对象标准。

Automation:Automation是一种微软公司的技术,目的是在开发环境里使用COM对象ActiveX组件是一种微软标准,目的是在开发环境里共享不同程序的对象。

基于VB 6.0的CATIA二次开发在零件测量中的应用

基于VB 6.0的CATIA二次开发在零件测量中的应用

10.16638/ki.1671-7988.2021.02.013基于VB 6.0的CATIA二次开发在零件测量中的应用梁锋,钟建强,罗培锋,陈东(广州汽车集团股份有限公司汽车工程研究院,广东广州511434)摘要:针对汽车车身开发过程中重量管控,为改善单件重量手工测量统计的传统低效现象,给出单件重量的程序自动测量方法。

在介绍VB编程语言及CATIA二次开发理论的基础上,给出程序自动测量的基本流程,利用VB6.0 Automation API调用内置函数GetMeasurable,实现零件的批量测量并写入EXCEL表格中为后续数据处理提供基础。

通过实例验证,证明了CATIA批量自动测量相对传统手工测量方法的优越性。

结果表明,CATIA二次开发可以提高工作效率。

关键词:VB;CATIA;二次开发;体积测量;重量测量;测量输出中图分类号:U463.82 文献标识码:A 文章编号:1671-7988(2021)02-38-04Application of CATIA Secondary Development Based on VB 6.0 in Part MeasurementLiang Feng, Zhong Jianqiang, Luo Peifeng, Chen Dong( Automotive Engineering Research Institute of Guangzhou Automobile Group Co., Ltd., Guangdong Guangzhou 511434 )Abstract: Aiming at the weight control in the development of automobile body, in order to improve the traditional inefficient phenomenon of manual measurement and statistics of single weight, the program automatic measurement method of single weight is given. Based on the introduction of VB programming language and CA TIA secondary development theory, the basic process of program automatic measurement is given. Using VB6.0 automation API to call the built-in function getmeasurable, batch measurement of parts is realized and written into EXCEL table to provide the basis for subsequent data processing.It is proved that the CATIA batch automatic measurement is superior to the traditional manual measurement through the example verification. The results show that CATIA secondary development can improve the work efficiency. Keywords: VB; CATIA; Secondary development; Volume measurement; Weight measurement; Measurement output CLC NO.: U463.82 Document Code: A Article ID: 1671-7988(2021)02-38-04前言CATIA 是法国达索公司开发的CAD/CAE/CAM 一体化软件,在世界CAD/CAE/CAM领域中处于领先地位[1]。

CATIA二次开发的几种方式

CATIA二次开发的几种方式

CATIA二次开发1.1 CATIA二次开发的几种方式CATIA接口通过两种方式与外部程序通信:进程内应用程序(In_Process Application)方式和进程外应用程序(Out_Process Application)方式。

对CATIA进行二次开发一共有四种方式:Automation API ,KnowledgeWare,Interactive User Defined Feature和 CAA V5 C++ And Java API。

1.Automation API 使用自动化应用接口(Automation API)的宏。

用于自动化(Automation)组件,日志(Journaling),Visual Basic和JavaScript/Html的开发,这是一种交互方式的定制。

该定制方式允许用户获取CATIA的数据模型。

通过提供交互的方式,让用户记录操作过程,通过VB Script or Java Script 来录制宏,从而自动生成代码。

Automation API具备了与任何OLE所兼容的平台进行通讯的能力。

2.KnowledgeWare 智能构件(knowledgeware)。

是一种反应式的,基于规则的,面向目标的客户化方式。

它是一种高效的规范重用,像应用公式一样简单的,实现团体的知识库准则集,并且和V5紧密集成以提升处理能力。

它能通过相关的稳定不变的规范定义来实现交互的知识捕捉。

智能构件是一套预定义的易用服务,它驱动的管理和重用是从函数、规范到组件和系统来一步一步实现的。

它允许定制和外部代码的集成。

它用于三个方面:知识顾问、知识专家和产品工程优化。

知识顾问是用于参与设计定义的嵌入知识,包含规则集、检查、审查和预定义行为(Behavior)。

知识专家则是基于规则的过程,可以实现规则集、检查和报告。

产品工程优化是面向设计目标的,它包含优化目标、准则和求解方案。

3. Interactive User Defined Feature 交互式的用户定义特征,是一种编制式的定制开发。

CATIA二次开发方法与实例

CATIA二次开发方法与实例

CATIA二次开发方法与实例一、引言CATIA(Computer Aided Three Dimensional Interaction Application System),计算机辅助三维/二维交互式应用系统)V5是IBM/DS基于Windows核心开发的高端CAD/CAM软件系统。

目前CATIA最新的版本为V6。

CATIA系统如今已经发展为集成化的CAD/CAE/CAM 系统,它具有统一的用户界面、数据管理以与兼容的数据库和应用程序接口,并拥2多个独立的模块。

在国,CATIA应用CAA 组件应用架构进行二次开发刚刚开始不久,相对人员比较少,资料不多,由于CATIA软件功能的强大以与CAA二次开发功能的强大,探索和实现基于CATIA 的二次开发技术具有很好的应用价值。

二、CATIA的二次开发方式作为强大的工程软件,CATIA具有很强的开放性能。

用户可以按照自己的需要,采用不同方式进行各种程度上的开发。

CATIA二次开发接口是通过两种方式与外部程序通信:进程应用程序(In-process Application)方式和进程外应用程序(Out-Process Application)方式。

进程应用程序方式下,CATIA软件与脚本运行在同一进程地址空间,比如宏方式(Macro)。

在CATIA环境下通过菜单记录宏(Record Macro),宏记录后,生成VB脚本(Visual Basic Script)序列,当宏开始运行,CATIA就处于非激活状态,因此不能宏调用之间存储变量的值,这种方式比较简单,在CATIA环境就中可完成。

进程外应用程序方式下,CATIA与外部应用程序在不同进程地址空间运行。

在CATIA运行的情况下,外部进程可以通过接口驾驭CATIA,创建、修改CATIA环境和几何形体的数据、尺寸等,同时支持对象连接与嵌入(OLE,Object Linking and Enbedding)。

具体来说,CATIA的二次开发主要有两种方法:使用宏对CATIA进行二次开发和使用组件应用架构(CAA%26ndash;RADE)对CATIA进行二次开发。

CATIA VBA二次开发初步

CATIA VBA二次开发初步

录制宏
宏命令录制
录制宏
宏命令录制
宏命令录制
宏命令录制
宏命令录制
宏命令应用
宏命令应用
宏命令修改
宏程序
程序说明
Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument //获得当前文档 Dim part1 As Part Set part1 = partDocument1.Part //获得当前零件 Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies //获得当前几何图形集集合 Dim hybridBody1 As HybridBody Set hybridBody1 = hybridBodies1.Add() //添加几何图形集 part1.Update Dim hybridShapeFactory1 As HybridShapeFactory Set hybridShapeFactory1 = part1.HybridShapeFactory Dim hybridShapePointCoord1 As HybridShapePointCoord Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(0#, 0#, 0#) //建立点 hybridBody1.AppendHybridShape hybridShapePointCoord1 //将点插入几何图形集 part1.InWorkObject = hybridShapePointCoord1 part1.Update End Sub

CATIA_VBA二次开发实例

CATIA_VBA二次开发实例

基于CATIA 软件对VBA 的支持进行飞机翼面的造型设计介绍了根据CATIA 软件对VBA (Visual Basic for Application) 的支持,利用VBscript 脚本语言开发飞机翼面的造型设计程序的方法。

并对外形较复杂的导流片,利用数学方法计算生成其截面控制点,利用程序读取控制点坐标,直接在CATIA 软件曲面设计环境中, 自动生成各翼肋剖面的Spline 曲线,然后采用CATIA 高级曲面的“Loft”命令完成飞机翼面的造型设计。

在国内各主机厂所先后将CATIA 软件运用于飞机的设计。

在作飞机翼面曲面造型中,需要作出各翼肋截面的翼型草图,而翼型截面形状本身由较光滑的样条曲线组成,而生成样条曲线由翼型数据构建,如果每个翼剖面的样条曲线都用CATIA 软件提供的Sketch 草图工作界面环境去做,需要人工输入的翼型数据工作量庞大。

特别是对导流片的曲面设计,由于仅有根部截面的数据,没有其他截面的数据,还需要用数学函数的方法,计算其截面的控制点坐标。

这一系列相似性、重复性的工作,我们采用计算机程序来完成。

基于CATIA 对VBA ( Visual Basic for Application) 的支持,我们利用VBscript 脚本语言,开发了飞机翼面的造型设计程序,利用该程序可以非常方便地生成飞机面曲面,如发现曲面有不光顺的地方,直接修改翼型数据,大大减轻了设计工作量。

1 VBA 程序设计描述综合应用VBA 及CATIA 的宏命令,按形式语言SPARKS 描述飞机翼面造型设计程序的逻辑Dim CATIA As Object / / 声明CATIA 为类型变量/ /Dim HybridBody1 As Variant/ / 声明HybridBody1 为变型变量/ /Procedure CommandButton1-Click() / / 事件响应函数GetCATIACreate PointEndprocedure GetCATIA () / / 创建与CATIA 软件的连接Set CATIA ← GetObject ( , ”CATIA . Application”)/ / 将返回指向CATIA 应用程序的指针赋给CATIA 变量EndProcedure Creat Point () / / 在CATIA 环境中创建点/ /Dim HybridShapePointCoord0(2000) As ObjectDim HybridShapePointCoords(2000) As ObjectDim HybridShapePointCoordx(2000) As Object //定义控制点的最大数目其数据为类类型//Dim xs ,ys ,zs ,xx ,yx ,zx As String/ / 声明字符串变量/ /Set HybridBody1 ← CATIA . ActiveDocument . Part .HybridBodies. Item(”Open- body. 1”)Nworksheets ←11For i ←1 To Nworksheets do / / 读取Excel 工作表中的数据/ /NControlPoint ←1xs ←Worksheets ( i ) . Cells. Range ( ”C” & Format(NControlPoint) ) . Value ys ←Worksheets ( i ) . Cells. Range ( ”B” & Format(NControlPoint) ) . Value zs ←Worksheets ( i ) . Cells. Range ( ”A” & Format(NControlPoint) ) . Value xx ←Worksheets ( i ) . Cells. Range ( ”F” & Format(NControlPoint) ) . Value yx ←Worksheets ( i ) . Cells. Range ( ”E” & Format(NControlPoint) ) . Value zx ←Worksheets ( i ) . Cells. Range ( ”D” & Format(NControlPoint) ) . Value NControlPoint ←2Loopxs ←Worksheets ( i ) . Cells. Range ( ”C” & Format(NControlPoint) ) . Value ys ←Worksheets ( i ) . Cells. Range ( ”B” & Format(NControlPoint) ) . Valuezs ←Worksheets ( i ) . Cells. Range ( ”A” & Format(NControlPoint) ) . Value xx ←Worksheets ( i ) . Cells. Range ( ”F” & Format(NControlPoint) ) . Value yx ←Worksheets ( i ) . Cells. Range ( ”E” & Format(NControlPoint) ) . Value zx ←Worksheets ( i ) . Cells. Range ( ”D” & Format(NControlPoint) ) . Value If zs = ”enddate”thenCall Creatspline ( HybridShapePointCoords ,NControlPoint)Call Creatspline ( HybridShapePointCoordx ,NControlPoint) Exit Loopelsexxs ←CDbl (xs)yys ←CDbl (ys)zzs ←CDbl (zs)xxx ←CDbl (xx)yyx ←CDbl (yx)zzx ←CDbl (zx)Set HybridShapePointCoords(NControlPoint - 1) ←CATIA. ActiveDocument .Part . HybridShapeFactory.AddNewPointCoord(xxs , yys , zzs)HybridBody1. AppendHybridShapeHybridShapePointCoords(NControlPoint - 1)CATIA. ActiveDocument . Part . InWorkObject ←HybridShapePointCoords(NControlPoint - 1)Set HybridShapePointCoordx ( NControlPoint - 1 ) ←CATIA. ActiveDocument . Part . HybridShapeFactory.AddNewPointCoord(xxx ,yyx ,zzx)HybridBody1. AppendHybridShapeHybridShapePointCoordx(NControlPoint - 1)CATIA. ActiveDocument . Part . InWorkObject ←HybridShapePointCoordx(NControlPoint - 1)CATIA . ActiveWindow. ActiveViewer. ReframeCATIA . ActiveDocument . Part . UpdateNControlPoint ←NControlPoint + 1/ / 在CATIA 环境中显示控制点/ /ForeverEndReturnprocedure Creatspline ( HybridShapePointCoord0 ,NControlPoint)/ / 在CATIA 环境中创建样条曲线/ /Dim HybridShapeSpline As ObjectSet HybridShapeSpline ←CATIA . ActiveDocument .Part .HybridShapeFactory.AddNewSplineHybridShapeSpline. SetSplineType 0 HybridShapeSpline. SetClosing 1Dim Reference(2000) As ObjectDim HybridShapeControlPoint As ObjectFor i ←1 To NControlPoint - 2Set Reference ( i ) ← CATIA . ActiveDocument . Part . CreateReferenceFromGeometry(HybridShapePointCoord0(i) )Set HybridShapeControlPoint ←CATIA . ActiveDocument .Part . HybridShapeFactory. AddNewControlPoint (Reference(i) )HybridShapeSpline. AddControlPointHybridShapeControlPointEndHybridBody1. AppendHybridShape HybridShapeSplineCATIA. ActiveDocument . Part . InWorkObject ←HybridShapeSplineCATIA . ActiveDocument . Part . UpdateCATIA . ActiveWindow. ActiveViewer. ReframeEndReturn示例应用上述思想作了一个翼面和导流片的示例,其程序生成的翼面剖面草图如图1 所示,导流片剖面草图如图2 所示,Loft 形成的翼面曲面如图3所示, 导流片曲面如图4 所示。

catia二次开发程序

catia二次开发程序

Private Sub cmdCreate_Click()Dim x As Variant, y As Variant, t As DoubleConst pi = 3.14' 连接到CATIA,如果CATIA未启动,启动它Dim CATIA As ObjectOn Error Resume NextSet CATIA = GetObject(, "CATIA.Application")If Err.Number <> 0 ThenSet CATIA = CreateObject("CATIA.Application")CATIA.Visible = TrueEnd IfOn Error GoTo 0Set documents1 = CATIA.DocumentsSet partDocument1 = documents1.Add("Part")Set part1 = partDocument1.PartSet bodies1 = part1.BodiesSet body1 = bodies1.Item("PartBody")Set body2 = bodies1.AddSet product1 = partDocument1.GetItem("Part1")product1.PartNumber = "gear"part1.Update':绘制一条直线作为旋转轴用和Z轴重合Set hybridShapeFactory1 = part1.HybridShapeFactorySet hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(0#, 0#, 0#)Set hybridBodies1 = part1.HybridBodiesSet hybridBody1 = hybridBodies1.Item("Geometrical Set.1")hybridBody1.AppendHybridShape hybridShapePointCoord1part1.InWorkObject = hybridShapePointCoord1part1.UpdateSet reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(0#, 0#, 1#)Set hybridShapeLinePtDir1 = hybridShapeFactory1.AddNewLinePtDir(reference1, hybridShapeDirection1, 0#, 20#, False)hybridBody1.AppendHybridShape hybridShapeLinePtDir1part1.InWorkObject = hybridShapeLinePtDir1part1.Update':设置f(x) 和relationsSet parameters1 = part1.ParametersSet Length1 = parameters1.CreateDimension("", "LENGTH", 0#)Length1.Rename "分度圆直径dp"Set parameters2 = part1.ParametersSet Length2 = parameters2.CreateDimension("", "LENGTH", 0#) Length2.Rename "齿顶高ha"Set parameters3 = part1.ParametersSet length3 = parameters3.CreateDimension("", "LENGTH", 0#) length3.Rename "齿根高hf"Set parameters4 = part1.ParametersSet length4 = parameters4.CreateDimension("", "LENGTH", 0#) length4.Rename "齿全高h"Set parameters5 = part1.ParametersSet length5 = parameters5.CreateDimension("", "LENGTH", 0#) length5.Rename "齿顶圆直径da"Set parameters6 = part1.ParametersSet length6 = parameters6.CreateDimension("", "LENGTH", 0#) length6.Rename "齿根圆直径df"Set parameters7 = part1.ParametersSet length7 = parameters7.CreateDimension("", "LENGTH", 0#) length7.Rename "基圆直径db"Set parameters8 = part1.ParametersSet length8 = parameters8.CreateDimension("", "LENGTH", 0#) length8.Rename "端面模数mt"Set parameters9 = part1.ParametersSet angle1 = parameters9.CreateDimension("", "ANGLE", 0#) angle1.Rename "端面压力角at"Set parameters10 = part1.ParametersSet realParam1 = parameters10.CreateReal("", 0#) realParam1.Rename "端面齿顶高系数hat"Set parameters11 = part1.ParametersSet realParam2 = parameters11.CreateReal("", 0#) realParam2.Rename "端面顶隙系数ct"Set parameters12 = part1.ParametersSet length9 = parameters12.CreateDimension("", "LENGTH", 0#) length9.Rename "法面模数mn"length9.Value = Val(txtMod.Text)Set parameters13 = part1.ParametersSet angle2 = parameters13.CreateDimension("", "ANGLE", 0#) angle2.Rename "螺旋角β"angle2.Value = Val(Text1.Text)Set parameters14 = part1.ParametersSet realParam3 = parameters14.CreateReal("", 0#) realParam3.Rename "齿轮齿数z"realParam3.Value = Val(txtCount.Text)Set parameters15 = part1.ParametersSet angle3 = parameters15.CreateDimension("", "ANGLE", 0#)angle3.Rename "法面压力角an"angle3.Value = Val(txtAng.Text)Set parameters16 = part1.ParametersSet realParam4 = parameters16.CreateReal("", 0#)realParam4.Rename "法面齿顶高系数han"realParam4.Value = 1#Set parameters17 = part1.ParametersSet realParam5 = parameters17.CreateReal("", 0#)realParam5.Rename "法面顶隙系数cn"realParam5.Value = 0.25Set parameters18 = part1.ParametersSet length10 = parameters18.CreateDimension("", "LENGTH", 0#) length10.Rename "齿轮宽B"length10.Value = Val(txtDis.Text)Set parameters19 = part1.ParametersSet parameters21 = part1.ParametersSet parameters22 = part1.ParametersSet length14 = parameters22.CreateDimension("", "LENGTH", 0#) length14.Rename "齿顶圆倒角n1"Set parameters23 = part1.ParametersSet length15 = parameters23.CreateDimension("", "LENGTH", 0#) length15.Rename "齿根圆角rf"Set relations1 = part1.RelationsSet formula1 = relations1.CreateFormula("Formula.1", "", Length1, "`端面模数mt` *`齿轮齿数z` ")formula1.Rename "Formula.1"Set relations2 = part1.RelationsSet formula2 = relations2.CreateFormula("Formula.2", "", Length2, "`端面模数mt` *`端面齿顶高系数hat` ")formula2.Rename "Formula.2"Set relations3 = part1.RelationsSet formula3 = relations3.CreateFormula("Formula.3", "", length3, "`端面模数mt` *(`端面顶隙系数ct` +`端面齿顶高系数hat` )")formula3.Rename "Formula.3"Set relations4 = part1.RelationsSet formula4 = relations4.CreateFormula("Formula.4", "", length4, "`齿顶高ha` +`齿根高hf` ")formula4.Rename "Formula.4"Set relations5 = part1.RelationsSet formula5 = relations5.CreateFormula("Formula.5", "", length8, "`法面模数mn` /cos(`螺旋角β` )")formula5.Rename "Formula.5"Set relations6 = part1.RelationsSet formula6 = relations6.CreateFormula("Formula.6", "", angle1, "atan(tan(`法面压力角an` )/cos(`螺旋角β` ))")formula6.Rename "Formula.6"Set relations7 = part1.RelationsSet formula7 = relations7.CreateFormula("Formula.7", "", realParam1, "`法面齿顶高系数han` *cos(`螺旋角β` )")formula7.Rename "Formula.7"Set relations8 = part1.RelationsSet formula8 = relations8.CreateFormula("Formula.8", "", realParam2, "`法面顶隙系数cn` *cos(`螺旋角β` )")formula8.Rename "Formula.8"Set relations9 = part1.RelationsSet formula9 = relations9.CreateFormula("Formula.9", "", length14, "0.5*`法面模数mn` ")formula9.Rename "Formula.9"Set relations10 = part1.RelationsSet formula10 = relations10.CreateFormula("Formula.10", "", length15, "0.38*`端面模数mt` ")formula10.Rename "Formula.10"Set relations11 = part1.RelationsSet formula11 = relations11.CreateFormula("Formula.11", "", length5, "`分度圆直径dp` +2*`齿顶高ha` ")formula11.Rename "Formula.11"Set relations12 = part1.RelationsSet formula12 = relations12.CreateFormula("Formula.12", "", length6, "`分度圆直径dp` -2*`齿根高hf` ")formula12.Rename "Formula.12"Set relations13 = part1.RelationsSet formula13 = relations13.CreateFormula("Formula.13", "", length7, "`分度圆直径dp` *cos(`端面压力角at` )")formula13.Rename "Formula.13"'定义x,y,t。

CATIA V5 Automation Detailed Steps(基于VB的catia二次开发代码)

CATIA V5 Automation Detailed Steps(基于VB的catia二次开发代码)

CATIA TrainingCOPYRIGHT DASSAULT SYSTEMES 2002Version 5 Release 9June 2002C A T I A V 5 A u t o m a t i o nD e t a i l e d S t e p sTable of ContentsViews.vbp (3)PartDesign.vbp (5)ShapeDesign.vbp (8)Assembly.vbp (12)Drafting.vbp (15)GetPoint.vbp (18)TestSelections.vbp (20)Views.vbpOption ExplicitDim CATIA As INFITF.ApplicationDim myDoc As PartDocumentPrivate Sub Command1_Click()On Error Resume NextSet CATIA = GetObject(, "CATIA.Application")If Err.Number <> 0 ThenSet CATIA = CreateObject("CATIA.Application")CATIA.Visible = TrueEnd IfOn Error GoTo 0' Opening Bolt.CATPartDim myDir As StringmyDir = App.PathSet myDoc = CATIA.Documents.Open(myDir & "\Bolt.CATPart")Dim myViewer3 As Viewer3DDim myViewPoint As Viewpoint3D' Getting the active ViewerSet myViewer3 = CATIA.ActiveWindow.ActiveViewer myViewer3.RenderingMode = catRenderShadingDim myCam3d As Camera3DDim i As Integer' Display the number of defined cameras.MsgBox myDoc.Cameras.Count' Scaning all the cameras of the documentFor i = 1 To myDoc.Cameras.CountSet myCam3d = myDoc.Cameras.Item(i)' Modifying the Viewpoint3D of the active viewermyViewer3.Viewpoint3D = myCam3d.Viewpoint3DmyViewer3.ReframemyViewer3.ZoomInmyViewer3.UpdateMsgBox Next' Selecting the front cameraSet myCam3d = myDoc.Cameras.Item("* front") myViewer3.Viewpoint3D = myCam3d.Viewpoint3D' Saving the documentIf MsgBox("Save Bolt2", vbOKCancel) = vbOK Then On Error Resume NextKill (myDir & "\Bolt2.CATPart")Call myDoc.SaveAs(myDir & "\Bolt2.CATPart")Call myDoc.CloseOn Error GoTo 0End IfEnd SubPartDesign.vbpOption ExplicitDim CATIA As INFITF.ApplicationPrivate Sub Command1_Click()On Error Resume NextSet CATIA = GetObject(, "CATIA.Application")If Err.Number <> 0 ThenSet CATIA = CreateObject("CATIA.Application")CATIA.Visible = TrueEnd IfOn Error GoTo 0' Creating a new PartDim MyDoc As PartDocumentSet MyDoc = CATIA.Documents.Add("Part")' Getting the default Body called "MechanicalTool.1" (internal name)Dim myBody As BodySet myBody = MyDoc.Part.Bodies.Item("MechanicalTool.1")' Activating the body as the "InWorkObject"MyDoc.Part.InWorkObject = myBody' Creating a reference on XY planeDim ReferencePlane As ReferenceSet ReferencePlane = MyDoc.Part.CreateReferenceFromGeometry(MyDoc.Part.OriginElements.PlaneXY)' Creating mySketch1 on XY PlaneDim mySketch1 As SketchSet mySketch1 = myBody.Sketches.Add(ReferencePlane)' Opening mySketch1 and getting the factoryDim MyFactory1 As Factory2DSet MyFactory1 = mySketch1.OpenEdition()' Creating 4 linesDim l1 As Line2DDim l2 As Line2DDim l3 As Line2DDim l4 As Line2DSet l1 = MyFactory1.CreateLine(10#, 10#, 10#, 30#)Set l2 = MyFactory1.CreateLine(10#, 30#, 40#, 30#)Set l3 = MyFactory1.CreateLine(40#, 30#, 40#, 10#)Set l4 = MyFactory1.CreateLine(40#, 10#, 10#, 10#) mySketch1.CloseEdition' Creating mySketch2 on XY PlaneDim mySketch2 As SketchSet mySketch2 = myBody.Sketches.Add(ReferencePlane)' Opening mySketch2 and getting the factoryDim MyFactory2 As Factory2DSet MyFactory2 = mySketch2.OpenEdition()' Creating 1 CircleDim c1 As Circle2DSet c1 = MyFactory2.CreateClosedCircle(40#, 30#, 10#) mySketch2.CloseEdition' Getting the shapeFactoryDim MyFact As ShapeFactorySet MyFact = MyDoc.Part.ShapeFactory' Creating a padDim myPad As PadSet myPad = MyFact.AddNewPad(mySketch1, 20)' Creating a PocketDim myPok As PocketSet myPok = MyFact.AddNewPocket(mySketch2, -20) MyDoc.Part.Update' Reframing the window on the partCATIA.ActiveWindow.ActiveViewer.ReframeEnd SubShapeDesign.vbpOption ExplicitDim CATIA As INFITF.ApplicationPrivate Sub Command1_Click()On Error Resume NextSet CATIA = GetObject(, "CATIA.Application")If Err.Number <> 0 ThenSet CATIA = CreateObject("CATIA.Application")CATIA.Visible = TrueEnd IfOn Error GoTo 0Dim myPartDocument As PartDocumentSet myPartDocument = CATIA.Documents.Add("Part")Dim myPart As PartSet myPart = myPartDocument.Part'Creating an Open_body if not already existingOn Error Resume NextDim myHybridBody As HybridBodySet myHybridBody = myPart.HybridBodies.Item("Open_body.1") If myHybridBody Is Nothing ThenSet myHybridBody = myPart.HybridBodies.AddEnd IfOn Error GoTo 0Dim MyHSFact As HybridShapeFactorySet MyHSFact = myPart.HybridShapeFactorymyPart.Update' Creating 6 PointsDim HyPt1 As HybridShapePointCoordDim HyPt2 As HybridShapePointCoordDim HyPt3 As HybridShapePointCoordDim HyPt4 As HybridShapePointCoordDim HyPt5 As HybridShapePointCoordDim HyPt6 As HybridShapePointCoordSet HyPt1 = MyHSFact.AddNewPointCoord(10#, 60#, 30#) Set HyPt2 = MyHSFact.AddNewPointCoord(70#, 75#, 35#) Set HyPt3 = MyHSFact.AddNewPointCoord(100#, 80#, 30#) Set HyPt4 = MyHSFact.AddNewPointCoord(100#, 80#, 40#) Set HyPt5 = MyHSFact.AddNewPointCoord(95#, 20#, 45#) Set HyPt6 = MyHSFact.AddNewPointCoord(100#, 10#, 50#)' Creating references on the pointsDim R1 As ReferenceDim R2 As ReferenceDim R3 As ReferenceDim R4 As ReferenceDim R5 As ReferenceDim R6 As ReferenceSet R1 = myPart.CreateReferenceFromGeometry(HyPt1) Set R2 = myPart.CreateReferenceFromGeometry(HyPt2) Set R3 = myPart.CreateReferenceFromGeometry(HyPt3) Set R4 = myPart.CreateReferenceFromGeometry(HyPt4) Set R5 = myPart.CreateReferenceFromGeometry(HyPt5) Set R6 = myPart.CreateReferenceFromGeometry(HyPt6)Dim myControlPoint As HybridShapeControlPoint' We can reuse the same variable: 'myControlPoint'' Creating first SplineDim HyLine1 As HybridShapeSplineSet HyLine1 = MyHSFact.AddNewSplineHyLine1.SetSplineType 0HyLine1.SetClosing 0' Adding the control pointsSet myControlPoint = MyHSFact.AddNewControlPoint(R1)HyLine1.AddControlPoint myControlPointSet myControlPoint = MyHSFact.AddNewControlPoint(R2)HyLine1.AddControlPoint myControlPointSet myControlPoint = MyHSFact.AddNewControlPoint(R3)HyLine1.AddControlPoint myControlPoint' Creating second SplineDim HyLine2 As HybridShapeSplineSet HyLine2 = MyHSFact.AddNewSplineCall HyLine2.SetSplineType(0)Call HyLine2.SetClosing(0)Set myControlPoint = MyHSFact.AddNewControlPoint(R4)HyLine2.AddControlPoint myControlPointSet myControlPoint = MyHSFact.AddNewControlPoint(R5)HyLine2.AddControlPoint myControlPointSet myControlPoint = MyHSFact.AddNewControlPoint(R6)HyLine2.AddControlPoint myControlPointDim Ref1 As ReferenceDim Ref2 As Reference' Creating a SweepSet Ref1 = myPart.CreateReferenceFromGeometry(HyLine1)Set Ref2 = myPart.CreateReferenceFromGeometry(HyLine2)Dim HybridShapeSweepExplicit1 As HybridShapeSweepExplicitSet HybridShapeSweepExplicit1 = MyHSFact.AddNewSweepExplicit(Ref1, Ref2)'myHybridBody.AppendHybridShape HyLine1'myHybridBody.AppendHybridShape HyLine2myHybridBody.AppendHybridShape HybridShapeSweepExplicit1' Creating a 3D PointDim HyPt7 As HybridShapePointCoordSet HyPt7 = MyHSFact.AddNewPointCoord(50#, 30#, 100#)myHybridBody.AppendHybridShape HyPt7' Creating the projection of "HyPt7" on the surface "HybridShapeSweepExplicit1" Dim Ref3 As ReferenceDim Ref4 As ReferenceSet Ref3 = myPart.CreateReferenceFromGeometry(HyPt7)Set Ref4 = myPart.CreateReferenceFromGeometry(HybridShapeSweepExplicit1)Dim HybridShapeProject1 As HybridShapeProjectSet HybridShapeProject1 = MyHSFact.AddNewProject(Ref3, Ref4) myHybridBody.AppendHybridShape HybridShapeProject1myPart.UpdateEnd SubAssembly.vbpOption ExplicitDim CATIA As ObjectPrivate Sub Command1_Click()Dim i As IntegerReDim myNames(1) 'As StringOn Error Resume NextSet CATIA = GetObject(, "CATIA.Application")If Err.Number <> 0 ThenSet CATIA = CreateObject("CATIA.Application")CATIA.Visible = TrueEnd IfOn Error GoTo 0Dim myDir As StringmyDir = App.Path' Creating the root productDim Titanic 'As ProductDocumentSet Titanic = CATIA.Documents.Add("Product")' Creating the hull at level 1myNames(0) = myDir + "\Hull.CATPart"Call Titanic.Product.Products.AddComponentsFromFiles(myNames, "*") Titanic.Product.PartNumber = "Titanic"Dim assy1 'As Product' Creating sub-product "ass1" at level 1'New Product not associated with a ProductDocument fileSet assy1 = Titanic.Product.Products.AddNewProduct("ass1")' Creating the Castle under "ass1" at level 2myNames(0) = myDir + "\Castle.CATPart"Call assy1.Products.AddComponentsFromFiles(myNames, "*")' Creating the Funnel under "ass1" at level 2myNames(0) = myDir + "\Funnel.CATPart"Call assy1.Products.AddComponentsFromFiles(myNames, "*")Titanic.Product.UpdateDim Ass1RefProduct 'As ProductSet Ass1RefProduct = assy1.ReferenceProduct' Creating 2nd instance of subproduct "ass1" at level 1Dim Product2 'As ProductSet Product2 = Titanic.Product.Products.AddComponent(Ass1RefProduct)'Creating the transformation matrixReDim var1(11)var1(0) = 1#var1(1) = 0#var1(2) = 0#var1(3) = 0#var1(4) = 1#var1(5) = 0#var1(6) = 0#var1(7) = 0#var1(8) = 1#var1(9) = 60# ' translation along Xvar1(10) = 0# ' translation along Yvar1(11) = 0# ' translation along Z' Moving the instanceProduct2.Move.Apply var1' Creating 3rd instance of "ass1" at level 1Dim Product3 'As ProductSet Product3 = Titanic.Product.Products.AddComponent(Ass1RefProduct)var1(9) = 120# ' translation along X' Moving the instanceProduct3.Move.Apply var1' Creating the Bill Of Material in the file TitanicBOM.txtCall Titanic.Product.ExtractBOM(catFileTypeText, myDir & "\TitanicBOM.txt") End SubDrafting.vbpOption ExplicitDim CATIA As INFITF.ApplicationPrivate Sub Command1_Click()Dim i As IntegerOn Error Resume NextSet CATIA = GetObject(, "CATIA.Application")If Err.Number <> 0 ThenSet CATIA = CreateObject("CATIA.Application")CATIA.Visible = TrueEnd IfDim myDir As StringmyDir = App.Path' Opening "Bolt.CATPart" fileDim MyPartDoc As PartDocumentSet MyPartDoc = CATIA.Documents.Open(myDir & "\Bolt.CATPart")' Opening "TitleBlock.CATDrawing" fileDim MyDrawDoc As DrawingDocumentSet MyDrawDoc = CATIA.Documents.Open(myDir & "\TitleBlock.CATDrawing")Dim mySheet As DrawingSheetSet mySheet = MyDrawDoc.Sheets.ActiveSheet' Creating the first view (Front View)Dim myView1 As DrawingViewSet myView1 = mySheet.Views.Add("Front View")Call myView1.Activate' Translating the front view (A0: 840mm X 1188mm)myView1.x = 400myView1.y = 150' Defining the front viewDim myGeneB1 As DrawingViewGenerativeBehaviorSet myGeneB1 = myView1.GenerativeBehaviormyGeneB1.Document = MyPartDocCall myGeneB1.DefineFrontView(1#, 0#, 0#, 0#, 1#, 0#)' Creating a circleCall myView1.ActivateDim myFact1 As Factory2DSet myFact1 = myView1.Factory2DDim c1 As Circle2DSet c1 = myFact1.CreateClosedCircle(30, 30, 10)myGeneB1.Update' Creating the second view (Top View)Dim myView2 As DrawingViewSet myView2 = mySheet.Views.Add("Top View")' Translating the top viewmyView2.x = 400myView2.y = 600' Defining the Projection viewDim myGeneB2 As DrawingViewGenerativeBehaviorSet myGeneB2 = myView2.GenerativeBehaviorCall myGeneB2.DefineProjectionView(myGeneB1, catTopView) myGeneB2.Document = MyPartDoc' Creating a circleCall myView2.ActivateDim myFact2 As Factory2DSet myFact2 = myView2.Factory2DDim c2 As Circle2DSet c2 = myFact2.CreateClosedCircle(30, 30, 20)myGeneB2.UpdateMyDrawDoc.UpdateEnd SubGetPoint.vbpClass1.cls'local variable(s) to hold property value(s)Private mvarX As Double 'local copyPrivate mvarY As Double 'local copyPrivate mvarZ As Double 'local copyPublic Sub Start()Dim f As New Form1' Setting the default HScroll valuesf.HScroll1.Value = mvarXf.HScroll2.Value = mvarYf.HScroll3.Value = mvarZ' Display the form window and Wait until the user click OK.f.Show vbModal' Getting the HScroll valuesmvarX = f.HScroll1.ValuemvarY = f.HScroll2.ValuemvarZ = f.HScroll3.ValueSet f = NothingEnd SubPublic Property Let X(ByVal vData As Double)mvarX = vDataEnd PropertyPublic Property Get X() As DoubleX = mvarXEnd PropertyPublic Property Let Y(ByVal vData As Double) mvarY = vDataEnd PropertyPublic Property Get Y() As DoubleY = mvarYEnd PropertyPublic Property Let Z(ByVal vData As Double) mvarZ = vDataEnd PropertyPublic Property Get Z() As DoubleZ = mvarZEnd PropertyForm1.frmPrivate Sub HScroll1_Change()Label4.Caption = Str(HScroll1.Value)End SubPrivate Sub HScroll2_Change()Label5.Caption = Str(HScroll2.Value)End SubPrivate Sub HScroll3_Change()Label6.Caption = Str(HScroll3.Value)End SubPrivate Sub OK_Click()Me.HideEnd SubTestSelections.vbpOption ExplicitPrivate Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Const SWP_NOMOVE = &H2Private Const SWP_NOSIZE = &H1Private Const HWND_TOPMOST = -1Private Const HWND_NOTOPMOST = -2Dim xPt1 'As Point2DDim xPt2 'As Point2DDim xLine1 'As Line2DDim xPt3d1 'As PointDim xPt3d2 'As PointDim CATIA As ObjectDim xSel 'As INFITF.SelectionPrivate Sub Command1_Click()ReDim Coord1(1) As VariantOn Error Resume Next' Getting the first 2D PointSet xSel = CATIA.ActiveDocument.SelectionSet xPt1 = xSel.FindObject("CATIAPoint2D")If Err = 0 Then' Display the "CATIAPoint2D" name and coordinatesxPt1.GetCoordinates Coord1Text1.Text = & " (" & Coord1(0) & "," & Coord1(1) & ")"End IfEnd SubPrivate Sub Command2_Click()ReDim Coord2(1) As VariantOn Error Resume Next' Getting the second 2D PointSet xSel = CATIA.ActiveDocument.SelectionSet xPt2 = xSel.FindObject("CATIAPoint2D")If Err = 0 Then' Display the Point name and its coordinatesxPt2.GetCoordinates Coord2Text2 = & " (" & Coord2(0) & "," & Coord2(1) & ")" End IfEnd SubPrivate Sub Command3_Click()On Error Resume Next' Getting a 2D LineSet xSel = CATIA.ActiveDocument.SelectionSet xLine1 = xSel.FindObject("CATIALine2D")If Err = 0 Then' Display the 2D Line nameText3 = End IfEnd SubPrivate Sub Command4_Click()' Create 3 lines :' - from xPt1 to xpt2' - from xPt1 to StartPoint of xLine1' - from xPt1 to EndPoint of xLine1Dim r1 As INFITF.ReferenceDim r2 As INFITF.ReferenceDim xPt3Dim xPt4Dim l1, l2, l3 'As Line2DReDim Coord1(1) As VariantReDim Coord2(1) As VariantReDim Coord3(1) As VariantReDim Coord4(1) As VariantOn Error Resume NextxPt1.GetCoordinates Coord1xPt2.GetCoordinates Coord2Set xPt3 = xLine1.StartPointxPt3.GetCoordinates Coord3Set xPt4 = xLine1.EndPointxPt4.GetCoordinates Coord4Dim d 'As DrawingDocument or PartDocument Dim f 'As Factory2DDim n 'As String' Testing if those 2D elements are in a drawing or in a sketchSet d = CATIA.Application.ActiveDocumentIf TypeName(d) = "PartDocument" Then 'We are in a sketchDim sk 'As Sketch' Getting the Factory2D and creating linesSet sk = xPt1.Parent.ParentSet f = sk.Factory2Dl1 = f.CreateLine(Coord1(0), Coord1(1), Coord2(0), Coord2(1))l2 = f.CreateLine(Coord1(0), Coord1(1), Coord3(0), Coord3(1))l3 = f.CreateLine(Coord1(0), Coord1(1), Coord4(0), Coord4(1)) ElseIf TypeName(d) = "DrawingDocument" Then ' We are in a drawing Dim v 'As DrawingView' Getting the Factory2D and creating linesSet v = d.Sheets.ActiveSheet.Views.ActiveViewSet f = v.Factory2Dl1 = f.CreateLine(Coord1(0), Coord1(1), Coord2(0), Coord2(1))l2 = f.CreateLine(Coord1(0), Coord1(1), Coord3(0), Coord3(1))l3 = f.CreateLine(Coord1(0), Coord1(1), Coord4(0), Coord4(1))End IfEnd SubPrivate Sub Command7_Click()' Creating a line in the 3D space.Dim r1 'As INFITF.ReferenceDim r2 'As INFITF.ReferenceDim Line3d1Dim d 'As PartDocumentDim dd 'As DrawingDocumentDim p 'As PartDim b 'As BodyDim hb 'As HybridBodyDim f 'As ShapeFactoryDim fh 'As HybridShapeFactoryDim f2d 'As Factory2DDim n As StringDim typdoc As StringOn Error Resume NextSet xSel = CATIA.ActiveDocument.Selection' Getting first pointSet xPt3d1 = xSel.FindObject("CATIAHybridShapePoint") If Err = 0 Then' Getting second pointSet xPt3d2 = xSel.FindObject("CATIAHybridShapePoint") End IfIf Err <> 0 ThenMsgBox "Select two Points in the 3D space"Exit SubEnd IfSet d = CATIA.Application.ActiveDocumenttypdoc = TypeName(d)If typdoc = "PartDocument" Then'Getting the HybridShapeFactorySet p = d.PartSet f = p.ShapeFactorySet fh = p.HybridShapeFactorySet r1 = p.CreateReferenceFromGeometry(xPt3d1)Set r2 = p.CreateReferenceFromGeometry(xPt3d2)' Creating the lineSet Line3d1 = fh.AddNewLinePtPt(r1, r2)p.HybridBodies.Item(1).AppendHybridShape Line3d1n = p.UpdateElseMsgBox "This is not a Part Document"End IfEnd SubPrivate Sub Command8_Click()ReDim Coord2(1) As VariantReDim Coord3(2) As VariantDim xPtList1.ClearOn Error Resume Next' Displaying all the "CATIAPoint2D" name and cordinates in the ListBoxSet xSel = CATIA.ActiveDocument.SelectionDo While Err = 0Set xPt = xSel.FindObject("CATIAPoint2D")If Err = 0 ThenxPt.GetCoordinates Coord2List1.AddItem ("2d:" & & " (" & Coord2(0) & "," & Coord2(1) & ")")End IfLoopErr = 0' Displaying all the "CATIAHybridShapePoint" name and coordiantes in the listBoxDo While Err = 0Set xPt = xSel.FindObject("CATIAHybridShapePoint")If Err = 0 ThenxPt.GetCoordinates Coord3List1.AddItem ("3d:" & & " (" & Coord3(0) & "," & Coord3(1) & "," & Coord3(2) & ")") End IfLoopEnd SubPrivate Sub Command9_Click()On Error Resume Next' Highlighting in CATIA the elements corresponding to "text6.text"Set xSel = CATIA.ActiveDocument.SelectionxSel.Search ("name:" & Text6.Text)End SubPrivate Sub Form_Load()' Displaying the Form1 window "on top"SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE On Error Resume Next' Launching CATIASet CATIA = GetObject(, "CATIA.Application")If Err.Number <> 0 ThenSet CATIA = CreateObject("CATIA.Application")CATIA.Visible = TrueEnd IfOn Error GoTo 0End Sub。

CATIA二次开发文件_VB

CATIA二次开发文件_VB

CATIA⼆次开发⽂件_VBCATIA⼆次开发⽂件第⼀课:CATIA V5⾃动化及脚本语⾔结构内容列表:CATIAV5⾃动化及脚本语⾔介绍VB、VBScript、VBA之间的区别宏的兼容性、结构及⽂件进程中的宏2.1运⾏⼀个宏2.2在⼯具栏上添加⼀个宏外进程的编程3.1 使⽤VBA或VB 运⾏外进程例⼦:从Excel⾥导出螺钉3.2使⽤Windows Scripting Host运⾏外进程3.2.1Windows Scripting Host 下的VBScript例⼦:“BoltVBScript.vbs”3.2.2Windows Scripting Host 下的JavaScript例⼦:“BoltJavaScript.js”3.3⽤HTML运⾏外进程3.3.1⽤VBScript在HTML⾥运⾏外进程例⼦:“BoltVBScript.html”3.3.2⽤JavaScript在HTML⾥运⾏外进程例⼦:“BoltJavaScript.html”1.C ATIA⾃动化及脚本语⾔概述通⽤在Unix和NT平台上⽆论是在NT平台还是Unix平台上,脚本语⾔允许你使⽤宏以⼀个⾮常简单的⽅式来对CA TIA V5进⾏编程。

CA TIA V5使⽤了NT平台下的VB脚本和Unix平台下的BASIC脚本中相同的部分,所以我们在两个平台下可以运⾏相同的宏。

在NT平台下⾃动化允许CATIA与其他程序共享对象,如EXCEL,WORD,VISUAL BASIC。

CA TIA可以使⽤WORD/EXCEL对象,反之也相同。

在UNIX平台下将来的CATIA的版本⾥,CATIA将允许同Java共享⾃⼰的对象,这将为Unix平台和NT平台提供完整的兼容性。

CATIA V5 ⾃动化:概述(仅限NT平台)⾃动化允许在不同的进程之间通讯COM:(对象组件模型):COM是微软公司提出的⽬的在不同程序中共享对象标准。

Automation:Automation是⼀种微软公司的技术,⽬的是在开发环境⾥使⽤COM对象ActiveX组件是⼀种微软标准,⽬的是在开发环境⾥共享不同程序的对象。

CATIA二次开发实例

CATIA二次开发实例
CATIA.Visible = True’将CATIA界面设为可见
End If
’以上程序实现在CATIA处于开启状态时就连接到CATIA,否则执行启动
’CATIA。程序中CATIA是Application的根对象,关键词“Set”用于对象操作
'----------------创建一个product文档加载外形---------
’品文档和工程图文档
Set product1 = productDocument1.Product’进入产品文档
Set products1 = product1.Products’通过对象的层层继承关系,最后创建了Product对象
Dim arrayOfVariantOfBSTR1(0)’定义一个CAD文档的引用
Set pocket1 = shapeFactory1.AddNewPocketFromRef(reference12, 35#)
Set reference13 = part1.CreateReferenceFromObject(hybridShapeCurvePar2)
pocket1.SetProfileElement reference13
hybridShapeFactory1.AddNewPointOnCurveFromDistance(reference1, P1#, False)’P1为基准’
面位置参数
hybridShapePointOnCurve1.DistanceType = 1
body1.InsertHybridShape hybridShapePointOnCurve1
CATIA对象库,如图2.6所示。注意CATIA提供的对象库大约有90多个,在选择对象库

CATIA_V5二次开发

CATIA_V5二次开发

基于CA TIA的界面二次开发方法与实例•作者:cad 来源:•字体大小:•小•中•大摘要:本文介绍了在以Windows XP 为操作系统的微机上应用VC++ 6.0工具,基于Component Application Architecture(CAA)组件应用架构的CA TIA界面二次开发技术。

并在此基础上通过建立一个基于CA TIA二次开发的五坐标数控机床的运动仿真系统,实例介绍了CA TIA的二次开发的目前研究结果。

关键词:CA TIA CAA二次开发界面数控机床运动仿真一、引言CA TIA(Computer Aided Three & Two Dimensional Interaction Application System,计算机辅助三维/二维交互式应用系统)V5是IBM/DS基于Windows核心开发的高端CAD/CAM软件系统。

目前CA TIA最新的版本为V5R14。

CA TIA系统如今已经发展为集成化的CAD/CAE/CAM系统,它具有统一的用户界面、数据管理以及兼容的数据库和应用程序接口,并拥有20多个独立的模块。

在国内,CA TIA应用CAA组件应用架构进行二次开发刚刚开始不久,相对人员比较少,资料不多,由于CA TIA软件功能的强大以及CAA二次开发功能的强大,探索和实现基于CA TIA的二次开发技术具有很好的应用价值。

二、CA TIA的二次开发方式作为强大的工程软件,CA TIA具有很强的开放性能。

用户可以按照自己的需要,采用不同方式进行各种程度上的开发。

CA TIA二次开发接口是通过两种方式与外部程序通信:进程内应用程序(In-process Application)方式和进程外应用程序(Out-Process Application)方式。

进程内应用程序方式下,CA TIA软件与脚本运行在同一进程地址空间,比如宏方式(Macro)。

在CA TIA环境下通过菜单记录宏(Record Macro),宏记录后,生成VB脚本(Visual Basic Script)序列,当宏开始运行,CA TIA就处于非激活状态,因此不能宏调用之间存储变量的值,这种方式比较简单,在CA TIA环境就中可完成。

CATIA二次开发的几种方式

CATIA二次开发的几种方式

CATIA二次开发1.1 CATIA二次开发的几种方式CATIA接口通过两种方式与外部程序通信:进程内应用程序(In_Process Application)方式和进程外应用程序(Out_Process Application)方式。

对CATIA进行二次开发一共有四种方式:Automation API ,KnowledgeWare,Interactive User Defined Feature和 CAA V5 C++ And Java API。

1.Automation API 使用自动化应用接口(Automation API)的宏。

用于自动化(Automation)组件,日志(Journaling),Visual Basic和JavaScript/Html的开发,这是一种交互方式的定制。

该定制方式允许用户获取CATIA的数据模型。

通过提供交互的方式,让用户记录操作过程,通过VB Script or Java Script 来录制宏,从而自动生成代码。

Automation API具备了与任何OLE所兼容的平台进行通讯的能力。

2.KnowledgeWare 智能构件(knowledgeware)。

是一种反应式的,基于规则的,面向目标的客户化方式。

它是一种高效的规范重用,像应用公式一样简单的,实现团体的知识库准则集,并且和V5紧密集成以提升处理能力。

它能通过相关的稳定不变的规范定义来实现交互的知识捕捉。

智能构件是一套预定义的易用服务,它驱动的管理和重用是从函数、规范到组件和系统来一步一步实现的。

它允许定制和外部代码的集成。

它用于三个方面:知识顾问、知识专家和产品工程优化。

知识顾问是用于参与设计定义的嵌入知识,包含规则集、检查、审查和预定义行为(Behavior)。

知识专家则是基于规则的过程,可以实现规则集、检查和报告。

产品工程优化是面向设计目标的,它包含优化目标、准则和求解方案。

3. Interactive User Defined Feature 交互式的用户定义特征,是一种编制式的定制开发。

基于VB的CATIA二次开发在数字化船厂资源配置最优化的应用

基于VB的CATIA二次开发在数字化船厂资源配置最优化的应用
理 统计模 型分析 资源 配置 的随 机过程 。
应用 Vi a ai 对 C 1 进行 面 向对 象 的 s l s u B c AT A
自动 化编 程 来 实 现 开 发 目标 。Vi a B sc 着 强 s l ai 有 u
2 船 厂 资 源 优 化 配 置 系 统 开 发
2 1 建立 模型 库 .
研究 应 用 C TI 软 件 强 大 的 三 维 模 型 表 现 A A 力、 开放式 的 内部命 令 集 合 以及 良好 的二 次 开 发 接 口, V 在 B环境 下 对 其 进 行 二 次 开 发 。通 过 对 船 厂 资 源模 型库 的提取 、 布与 分析 , 分 建立 船 舶企 业 资源 优 化配置 系统 。应 用 此 系统 评 价 车 间布 局 、 行 生 进 产 线负载 、 冲区容 量 、 颈分 析 ; 析各 种 不 同控 缓 瓶 分
造 船 技 术
2 1 年 第 5期 ( 第 3 3 ) 01 总 0期
基 于 VB 的 C ATI 二 次 开 发 在 数 字 化 船 厂 A 资 源 配 置 最 优 化 的 应 用
单 绍福 , 洪 源 孙
( 山东 交 通 学 院 ,济南 20 2) 5 0 3
依据 数字 船 厂 信 息 , 立 对 应 的 三 维 模 型 库 。 建
或仿 真动 画 。
通 过资 源所 处 不 同 的 建造 层 次 , 船 厂 的建 造 将
资源分 类整 理 。按照 制造 中心一 车问一单 元一设 备 的分类 方式 建立 数据模 型 库 。图 2为一般 船舶 制造 企业物 流及 规划 简 图L 。 2 ] 为 了便 于整 理 和归 类 , 每 个 建造 资 源 的数 据 将
助船 舶制造 技术 研 究 的 热点 问题 , 立 有 效 的 数 字 建 化船 厂模 型对 实现 精益 制造 、 成本 控 制 、 业 资源 优 企

CATIA二次开发VBS

CATIA二次开发VBS

NameofMaterial1=
msgbox "sFamiliesName="&(NameofMaterial1)
end sub
\\\\\\\\\\
catia.activedocument.product.parameters.item("Material").Value
Set oFirst_family = cFamilies_list.Item(1)
sFirstFamilyName = oFirst_
Set cFirstFamilyMaterials_list = oFirst_family.Materials
iNb_materials = cFirstFamilyMaterials_list.Count
="I_CANWrite_inTb"
End Sub
\\\\\\\\\\\\\\
ThisProduct.MechanismCommands.Item(1)
\\\\\\重点 材料部分 CAA V5 Visual Basic 文档里的working with Material
catia.activedocument.product.analyze....
\\运行不通
Language="VBSCRIPT"
Sub CATMain()
Set CAT = GetObject(,"CATIA.Application")
CAT.Visible =True
Set documents1 = CATIA.Documents
Set DrawingSheets1 = drawingDocument1.Sheets

Catia的二次开发

Catia的二次开发

Catia的二次开发近的项目也快结束了,第一次接触Catia的二次开发,对于一个以前完全没有学过Catia 的人来说,当时感觉这似乎是不可能完成的任务。

Catia二次开发多数是以VB进行,网上的资料也偏VB居多,而我们偏偏选择了CAA,使用C++开发。

网上关于CAA的二次开发相关资料不多,但是CAA自带了很详细的说明文档,类库,和大量示例程序(虽然我至今也仍未跑成功过它的例子)。

现在就准备将项目开发过程中一些认为比较重要的部分记录下来。

在项目中,有一个很重要的功能,就是上传Catia文件。

普通的上传文档并不困难,但关键在于Catia文件带有相链接的文档,比如CATProduct文件,所以需要在程序中自动找到Catia文件的相链接的文档。

起初,在帮助文档中找到一篇关于Retrieving a Product's Properties的文章,其中介绍了如何打印一个文档的属性。

首先它获得文档的根CATIProduct对象,然后获得它的所有孩子GetAllChildren(),这个方法将获得CATIProduct对象的所有孩子,并且不分层次。

然后使用CATIAttributesDescription类来获得CATIProduct的属性名,最后通过CATIInstance对象获得属性名对应的属性值,从CATIProduct获得CATIAttributesDescription和CATIInstance对象的操作如下:CATIProduct *iInstanceProd;CATIAttributesDescription *piAttrDesc = NULL;iInstanceProd->QueryInterface(IID_CATIAttributesDescriptio n, (void **) &piAttrDesc);CATIInstance *piInstance = NULL;rc = iInstanceProd->QueryInterface(IID_CATIInstance, (void **) &piInstance);接着就可以使用CATIAttributesDescription的List()方法将属性获取到一个CATListValCATAttributeInfos对象中,然后就是对CATListValCATAttributeInfos的一个遍历过程。

VB6.0环境下的CATIA二次开发简介

VB6.0环境下的CATIA二次开发简介

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,这样就可以通过根对象对所有的其他对象进行访问。

catia二次开发程序

catia二次开发程序

catia二次开发程序Private Sub cmdCreate_Click()Dim x As Variant, y As Variant, t As DoubleConst pi = 3.14' 连接到CATIA,如果CATIA未启动,启动它Dim CATIA As ObjectOn Error Resume NextSet CATIA = GetObject(, "CATIA.Application")If Err.Number <> 0 ThenSet CATIA = CreateObject("CATIA.Application")CATIA.Visible = TrueEnd IfOn Error GoTo 0Set documents1 = CATIA.DocumentsSet partDocument1 = documents1.Add("Part")Set part1 = partDocument1.PartSet bodies1 = part1.BodiesSet body1 = bodies1.Item("PartBody")Set body2 = bodies1.AddSet product1 = partDocument1.GetItem("Part1")product1.PartNumber = "gear"part1.Update':绘制一条直线作为旋转轴用和Z轴重合Set hybridShapeFactory1 = part1.HybridShapeFactorySet hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(0#, 0#, 0#) Set hybridBodies1 = part1.HybridBodiesSet hybridBody1 = hybridBodies1.Item("Geometrical Set.1") hybridBody1.AppendHybridShape hybridShapePointCoord1part1.InWorkObject = hybridShapePointCoord1part1.UpdateSet reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1) Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(0#, 0#, 1#) Set hybridShapeLinePtDir1 = hybridShapeFactory1.AddNewLinePtDir(reference1, hybridShapeDirection1, 0#, 20#, False)hybridBody1.AppendHybridShape hybridShapeLinePtDir1part1.InWorkObject = hybridShapeLinePtDir1part1.Update':设置f(x) 和relationsSet parameters1 = part1.ParametersSet Length1 = parameters1.CreateDimension("", "LENGTH", 0#)Length1.Rename "分度圆直径dp"Set parameters2 = part1.ParametersSet Length2 = parameters2.CreateDimension("", "LENGTH", 0#) Length2.Rename "齿顶高ha"Set parameters3 = part1.ParametersSet length3 = parameters3.CreateDimension("", "LENGTH", 0#) length3.Rename "齿根高hf"Set parameters4 = part1.ParametersSet length4 = parameters4.CreateDimension("", "LENGTH", 0#) length4.Rename "齿全高h"Set parameters5 = part1.ParametersSet length5 = parameters5.CreateDimension("", "LENGTH", 0#) length5.Rename "齿顶圆直径da"Set parameters6 = part1.Parameters0#) length6.Rename "齿根圆直径df"Set parameters7 = part1.ParametersSet length7 = parameters7.CreateDimension("", "LENGTH", 0#) length7.Rename "基圆直径db"Set parameters8 = part1.ParametersSet length8 = parameters8.CreateDimension("", "LENGTH", 0#) length8.Rename "端面模数mt"Set parameters9 = part1.ParametersSet angle1 = parameters9.CreateDimension("", "ANGLE", 0#) angle1.Rename "端面压力角at"Set parameters10 = part1.ParametersSet realParam1 = parameters10.CreateReal("", 0#) realParam1.Rename "端面齿顶高系数hat"Set parameters11 = part1.ParametersSet realParam2 = parameters11.CreateReal("", 0#) realParam2.Rename "端面顶隙系数ct"Set parameters12 = part1.ParametersSet length9 = parameters12.CreateDimension("", "LENGTH", 0#) length9.Rename "法面模数mn"length9.Value = Val(txtMod.Text)Set parameters13 = part1.ParametersSet angle2 = parameters13.CreateDimension("", "ANGLE", 0#) angle2.Rename "螺旋角β"angle2.Value = Val(Text1.Text)Set parameters14 = part1.ParametersSet realParam3 = parameters14.CreateReal("", 0#) realParam3.Rename "齿轮齿数z"realParam3.Value = Val(txtCount.Text)Set parameters15 = part1.Parametersangle3.Rename "法面压力角an"angle3.Value = Val(txtAng.T ext)Set parameters16 = part1.ParametersSet realParam4 = parameters16.CreateReal("", 0#)realParam4.Rename "法面齿顶高系数han"realParam4.Value = 1#Set parameters17 = part1.ParametersSet realParam5 = parameters17.CreateReal("", 0#)realParam5.Rename "法面顶隙系数cn"realParam5.Value = 0.25Set parameters18 = part1.ParametersSet length10 = parameters18.CreateDimension("", "LENGTH", 0#) length10.Rename "齿轮宽B"length10.Value = Val(txtDis.Text)Set parameters19 = part1.ParametersSet parameters21 = part1.ParametersSet parameters22 = part1.ParametersSet length14 = parameters22.CreateDimension("", "LENGTH", 0#) length14.Rename "齿顶圆倒角n1"Set parameters23 = part1.ParametersSet length15 = parameters23.CreateDimension("", "LENGTH", 0#) length15.Rename "齿根圆角rf"Set relations1 = part1.RelationsSet formula1 = relations1.CreateFormula("Formula.1", "", Length1, "`端面模数mt` *`齿轮齿数z` ")formula1.Rename "Formula.1"Set relations2 = part1.RelationsSet formula2 = relations2.CreateFormula("Formula.2", "", Length2, "`端面模数mt` *`端面齿顶高系数hat` ")formula2.Rename "Formula.2"Set relations3 = part1.RelationsSet formula3 = relations3.CreateFormula("Formula.3", "", length3, "`端面模数mt` *(`端面顶隙系数ct` +`端面齿顶高系数hat` )") formula3.Rename "Formula.3"Set relations4 = part1.RelationsSet formula4 = relations4.CreateFormula("Formula.4", "", length4, "`齿顶高ha` +`齿根高hf` ")formula4.Rename "Formula.4"Set relations5 = part1.RelationsSet formula5 = relations5.CreateFormula("Formula.5", "", length8, "`法面模数mn` /cos(`螺旋角β` )")formula5.Rename "Formula.5"Set relations6 = part1.RelationsSet formula6 = relations6.CreateFormula("Formula.6", "", angle1, "atan(tan(`法面压力角an` )/cos(`螺旋角β` ))")formula6.Rename "Formula.6"Set relations7 = part1.RelationsSet formula7 = relations7.CreateFormula("Formula.7", "", realParam1, "`法面齿顶高系数han` *cos(`螺旋角β` )")formula7.Rename "Formula.7"Set relations8 = part1.RelationsSet formula8 = relations8.CreateFormula("Formula.8", "", realParam2, "`法面顶隙系数cn` *cos(`螺旋角β` )")formula8.Rename "Formula.8"Set relations9 = part1.RelationsSet formula9 = relations9.CreateFormula("Formula.9", "", length14, "0.5*`法面模数mn` ")formula9.Rename "Formula.9"Set relations10 = part1.RelationsSet formula10 = relations10.CreateFormula("Formula.10", "", length15, "0.38*`端面模数mt` ")formula10.Rename "Formula.10"Set relations11 = part1.RelationsSet formula11 = relations11.CreateFormula("Formula.11", "", length5, "`分度圆直径dp` +2*`齿顶高ha` ")formula11.Rename "Formula.11"Set relations12 = part1.RelationsSet formula12 = relations12.CreateFormula("Formula.12", "", length6, "`分度圆直径dp` -2*`齿根高hf` ")formula12.Rename "Formula.12"Set relations13 = part1.RelationsSet formula13 = relations13.CreateFormula("Formula.13", "", length7, "`分度圆直径dp` *cos(`端面压力角at` )")formula13.Rename "Formula.13"'定义x,y,t。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CATIA二次开发文件第一课:CATIA V5自动化及脚本语言结构内容列表:CATIAV5自动化及脚本语言介绍VB、VBScript、VBA之间的区别宏的兼容性、结构及文件进程中的宏2.1运行一个宏2.2在工具栏上添加一个宏外进程的编程3.1 使用VBA或VB 运行外进程例子:从Excel里导出螺钉3.2使用Windows Scripting Host运行外进程3.2.1Windows Scripting Host 下的VBScript例子:“BoltVBScript.vbs”3.2.2Windows Scripting Host 下的JavaScript例子:“BoltJavaScript.js”3.3用HTML运行外进程3.3.1用VBScript在HTML里运行外进程例子:“BoltVBScript.html”3.3.2用JavaScript在HTML里运行外进程例子:“BoltJavaScript.html”1.C ATIA自动化及脚本语言概述通用在Unix和NT平台上无论是在NT平台还是Unix平台上,脚本语言允许你使用宏以一个非常简单的方式来对CA TIA V5进行编程。

CA TIA V5使用了NT平台下的VB脚本和Unix平台下的BASIC脚本中相同的部分,所以我们在两个平台下可以运行相同的宏。

在NT平台下自动化允许CATIA与其他程序共享对象,如EXCEL,WORD,VISUAL BASIC。

CA TIA可以使用WORD/EXCEL对象,反之也相同。

在UNIX平台下将来的CATIA的版本里,CATIA将允许同Java共享自己的对象,这将为Unix平台和NT平台提供完整的兼容性。

CATIA V5 自动化:概述(仅限NT平台)自动化允许在不同的进程之间通讯COM:(对象组件模型):COM是微软公司提出的目的在不同程序中共享对象标准。

Automation:Automation是一种微软公司的技术,目的是在开发环境里使用COM对象ActiveX组件是一种微软标准,目的是在开发环境里共享不同程序的对象。

OLE:(对象链接及嵌入)意味着一个文件可以被另外的一个程序的文件链接。

这种链接及嵌入的对象可以被其他的程序在编辑区编辑。

Visual Basic ,VBA,VBScript之间的区别Visual Basic(Visual Basic专业版):VB是个完全的版本。

1.可以编制独立的程序。

2.也可以创建ActiveX和程序服务器。

3.可以被编译。

4. VB提供了自己的文档——《在线帮助》VBA(Visual Basic for Application):VBA是VB的一个子集。

1. VBA是程序中的主机,就象Word,Excel。

2.它提供了一个带有编辑器、除错器、帮助、对象浏览器、完成器的完整的开发环境。

3.利用它的Tools-Reference菜单可以声明使用的对象库。

这在完成和对象浏览器之间建立了一个通道。

VBScript(Visual Basic Script):VBScript是VB的一个子集。

1.更简单的VB解释语言。

2.可以调运CATIA对象。

3.没有数据类型的区别。

系统总是动态的调用函数和对象属性。

(迟绑定调用对象通过他们的Idispatch接口)宏兼容性一个在无论是NT平台还是Unix平台已纪录的宏都可以运行在两个平台上(NT和Unix)。

有面板的ActiveX被添加到宏里,但这个只可以在NT平台下。

其他服务例如“ Scripting.FileSystemObject”可以被“ CreateObject”所调用,但这个也只可以在NT平台下使用。

对象类型的声明在宏中是被纪录的,即使是它未被使用,但它可以在下一步的编程中帮助你理解程序。

CATIAV5脚本性能内进程应用:在CATIA里打开TOOLS-MOCROS菜单,当宏运行时,CATIA是不响应的。

在两次调用之间,你不可以在一个宏中存储变量。

宏起到了连接在Windows NT平台下的VBScript和Unix平台下的BasicScript的作用。

外进程应用外进程以AUTOMATION为基础,一个外进程可以调用CATIA,建立或修改草图,解码、定制、控制CATIA,与内进程不同的是,这个时候CATIA是可响应的。

外进程对CATIA对象作出的每一步修改我们都可以视修改情况决定是否保留来维持两个进程之间的同步,这种外进程可以通过一下工具来开发:1.Visual Basic2.Windows Script Host(VBScript,JavaScript)3.Windows Explorer HTML(VBScript,JavaScript)4.其它的任何COM程序。

在以后,将提供一种JAVA/CROBA封装的CATIAV5 的自动化对象,这些将使在NT平台和Unix 平台下开发的语言变为Java,无论是外进程还是内进程。

2.运行内进程的宏录制一个宏是指产生相应的脚本语言来纪录一串有次序的动作,如创建、修改对象。

当我们结束录制时,我们可以保存、修改、回放,这些被称为宏。

回放一个宏之所以为一个“内进程”是因为脚本被和CATIA同一个进程的解释器所执行。

宏可以存储为外部的文件或存储在自己本身所在的文件上。

按照惯例,录制一个宏有利于我们了解怎样去编制程序。

2.1运行一个宏1.你可以象下面方式运行,这种方式时宏在CATIA一运行起时运行:2.也可以以混合的方式运行CATIA,这种运行方式执行时,这个命令会打开CATIA,运行宏,然后退出CATIA.你可以在宏菜单下以交互的方式运行一个宏,也可以在工具菜单上点击相应的按钮。

2.2在工具栏上添加宏1.点击Tools->Customize,打开对话框,点击Command页,选择Macros选项。

2.拖动你想要添加的宏的名称到工具栏上。

3.选择另外一个代替默认的图标,点击这个图标会显示这个宏的属性。

3.运行外进程程序(仅限于NT平台)脚本运行在其他程序的其他进程上,如:1.Visual Basic。

2.VBA(Excel/Word)。

3.使用VB脚本或JAVA脚本的WSH(Windows Script Host)。

4.使用VB脚本或JAVA脚本的HTML。

CATIA可以被其他任何的COM程序脚本化。

3.1 从VBA或VB上运行外进程Visual Basic和VBA提供了非常有用的工具,使用这些工具,我们可以声明任何由Dassault Systemes提供的库文件(*。

tlb)。

库文件包含了所有对象的声明和所有外部对象的方法和属性。

1.因为有类型定义,所以有类型检查和“早期绑定”2.完整的帮助系统将提供对象的所有属性和方法,帮助系统也会提供对象方法参数的类型。

3.对象浏览器将纪录所有的外部对象这里有使用从Visual Basic或VBA引导CATIA的说明:1.如果CATIA已经运行2. 如果CATIA没有运行:如果INFITF.tbl库文件被引用的话,我们可以用INFITF.Application来声明CATIA. 示例:这个示例是演示如何引导CATIA和从Excel里创建一个螺钉的零件。

在这个示例里我们将学习:-在Excel里的Visual Basic of Application(VBA)开发环境。

-怎么在Excel里创建一个按钮。

-怎么去在这个按钮上连接一个宏。

-这个宏将引导CATIA和创建一个螺钉。

第二课CATIA的脚本语言内容列表:1.介绍2.基本特征的脚本语言2.1基本特征的脚本语言介绍3. 草绘脚本3.1草绘脚本介绍4.零件特征设计脚本语言4.1零件特征设计脚本语言介绍5.外形特征设计脚本语言5.1外形特征设计脚本语言介绍6.装配特征设计脚本语言6.1装配特征设计脚本语言介绍7.草图特征脚本语言7.1草图特征脚本语言介绍8.测量8.1注册和类型库9.混合10.常规的注释-CATIA的注册和类型库-关于数字、文字和单位-关于安全数组变量-关于set的使用-关于call的使用-如何将一个宏转换成Visual Basic程序-如何将一个Visual Basic转换成宏-宏1.介绍外部对象的结构通过CATIA外部模式可以创建文档、零件、金属框架、产品、工程图和其他很多的包含在CATIA工作区的对象,这种外部对象提供了可以属性或方法去读取或修改现有的对象。

所有的对象可以被交互的看到,可以被宏或外进程的程序所脚本化。

内容列表:-关于对象、属性、方法。

-关于继承和聚合-关于数字、文字和单位-关于安全数组变量关于对象,对象数组,属性及方法。

脚本语言依赖于对象,例如Visual Basic。

在Visual Basic里,CATIA本身、文件、窗口、视图、零件、草图……甚至直线、曲线都有相对应的对象。

1.对象:实体。

例如:文档、直线、拉伸实体……2.属性:对应对象的特征。

例如:DocName= CATIA.ActiveDocument.FullName3.方法:对象的一个动作。

例如:CATIA.ActiveDocument.SaveAs “MyNewName”4.对象数组:对象的列表。

(提示:CATIA里,以s结尾的才是数组)CATIA对象数组索引从1开始,并不是0。

例如:For i=1 to CATIA.Documents.CountMsgbox CATIA.Documents.Item(i).NameNext我们还可以通过一个对象的名字来访问对象数组里的单个对象,例如:Msgbox CATIA.Documents.Item("Product1.CATProduct").Name我们通过使用Add函数来添加对象到对象数组里去,例如:set myPartDoc= CATIA.Documents.add("Part") (备注:“Part”是个关键词)关于继承与聚合对象之间存在两种关系,分别是:1.继承:通过继承,你可以聚集很多通用的属性或方法与一个对象上以适应不同的要求。

2.聚合:是指一个对象包含另一个对象的能力。

下面的视图中,Application对象聚合了documents数组。

PartDocument对象是个特殊的对象,它是从Document对象继承而来,专门为了零件存在的。

2.基本特征的脚本语言基本特征用来显示或管理所有的CATIA文件。

内容列表:2.1基本特征的脚本语言介绍。

-文档与窗口-基础对象结构-程序与文档-创建和打开文档-关闭和保存文档-窗口-视图及视点-摄像机2.2编程任务:修改一个现有文件的视点2.1基本特征的脚本语言介绍。

文档与窗口CATIA Application对象聚合了两个主要的数组对象:Documents、Windows. Documents数组对象,Documents聚合了任何的文档对象,然后通过*.加以标识。

相关文档
最新文档