宏在CATIA中的创建和运行
CATIA_CAA_二次开发详细教程
CATIA_CAA_二次开发详细教程CATIA CAA 二次开发详细教程第一讲:基本概念1. 什么是组件,由于本人是自学,属于摸着石头过河,所以很多东西显得比较幼稚,大家请见谅。
CAA,全称 Component Application Architecture,组件应用架构。
这个东西对不搞软件的人来说可能很陌生,我也很陌生啊,原来光知道“面向对象的技术”就很牛逼了,“组件技术”难道更牛逼吗,既然类和组件有着这么多类似的地方,那么传统的面向对象编程和面向组件编程有什么区别呢,简单的说,面向对象关注的是组合在一个二进制可执行文件中的各个类的关系,而面向组件的编程关注的是在彼此独立的基础上模块之间的交互性,这种交互性使得你并不需要熟悉它们内部的工作原理。
这两种方法最基本的不同在于它们对最终的应用程序的观点。
在传统的面向对象编程中,尽管你可以精心的把所有的商业逻辑分布在不同的类中,一旦这些类被编译,它们就被固化成了一个巨大的二进制代码。
所有的类共享同一个物理单元(通常是一个可执行文件)、被操作系统认为是同一个进程,使用同一个地址空间以及共享相同的安全策略等等。
如果多个开发者在同一份代码上进行开发,他们甚至还要共享源文件。
在这种情况下,修改一个类可能会让整个项目被重新链接,并重新进行必要的测试,更严重的,还有可能要修改其他的类。
但是,在面向组件开发中,应用程序是由一系列可以互相交互的二进制模块组合而成的。
一个具体的二进制组件可能并不能完成什么工作。
有些组件是为了提供一些常规服务而编写的,例如通信的封装或者文件访问组件。
也有一些是为了某些特定应用而专门开发的。
一个应用程序的设计者可以通过把这些不同的组件提供的功能粘合在一起来实现他们需要的商业逻辑。
很多面向组件的技术——例如: COM 、 J2EE 、 CORBA和 .NET 都为二进制组件提供了的无缝链接的机制。
而唯一的不同就是你需要在组件通信上花费的力气。
CATIA工程图宏教程
工程图百格线教程你是否为在Catia做2D图纸的时候,画百格线而伤脑筋呢?别担心,接下来我告诉你一个简单的方法1.新建一个txt文本文档,比如Draw-Grid.txt2.把以下内容复制到Draw-Grid.txt中=========这里开始,不要复制我========Option Explicit' ***********************************************************************' Purpose: This macro allows you to create Grid line in CATIAdrawing' Author: chenqa' Languages: VBScript' Locales: English' Developing CATIA Level: V5R12' View mush parallel to system aixes,view angle 0deg,90deg and -90deg ' ***********************************************************************Sub CATMain()CATIA.RefreshDisplay = FalseDim sStatus As String' Set the CATIA popup file alerts to False' It prevents to stop the macro at each alert during its execution CATIA.DisplayFileAlerts = False' Optional: allows to find the sample wherever it's installed' Variables declarationDim oDrwDocument As DrawingDocumentDim oDrwSheets As DrawingSheetsDim oDrwSheet As DrawingSheetDim oDrwView As DrawingViewDim oFactory2D AS Factory2D' The Distance between the linesDim D As IntegerDim nx As IntegerDim ny As Integer' The point coordinate select from DrawingDim X1 As IntegerDim Y1 As IntegerDim X2 As IntegerDim Y2 As IntegerDim Pt1 As Point2DDim Pt2 As Point2D'The view scale dAngle for rotate view scale for view scaleDim dScale,dAngle As Double'The view coordinate originDim X As IntDim Y As IntDim xSel As INFITF.SelectionD= InputBox("Please Input the Distance Value", "input box", "100")D= Cint (D)' Retrive a new drawing documentSet oDrwDocument = CATIA.ActiveDocument' Retrieve the drawing document's sheets collectionSet oDrwSheets = oDrwDocument.Sheets' Retrieve the active sheetSet oDrwSheet = oDrwSheets.ActiveSheet' Retrieve the active view of the sheetSet oDrwView = oDrwSheet.Views.ActiveView'Retrive the value of the viewX= oDrwView.xAxisDataY= oDrwView.yAxisDatadScale = oDrwView.ScaledAngle= oDrwView.AngleSet oFactory2D = oDrwView.Factory2D'Get the coordinate from the select two point'On Error Resume NextSet xSel = CATIA.ActiveDocument.SelectionxSel.clearReDim sFilter(0)sFilter(0) = "Point2D"MsgBox "Please select the left-bottom point "sStatus = xSel.SelectElement2(sFilter, "Select First Point.", false)If (sStatus = "Normal") ThenDim SelectedPoint1 As SelectedElementSet SelectedPoint1 = xSel.Item(1)Dim pt1Coord(2) As IntSelectedPoint1.GetCoordinates ( pt1Coord )'MsgBox "The frst point has been selected "Else MsgBox "Select a 2D Point 1"Exit SubEnd IfMsgBox "Please select the ritht-top point "sStatus = xSel.SelectElement2(sFilter, "Select The Second Point.",false)If (sStatus = "Normal") ThenDim SelectedPoint2 As SelectedElementSet SelectedPoint2 = xSel.Item(1)Dim pt2Coord(2) As IntSelectedPoint2.GetCoordinates ( pt2Coord )'MsgBox "The second point has been selected "Else MsgBox "Select a 2D point 1"Exit SubEnd Ifif dAngle=0 thenX1= Cint( (pt1Coord(0) - X)/dScale) Y1= Cint ((pt1Coord(1) - Y)/dScale) X2= Cint ((pt2Coord(0) - X)/dScale) Y2= Cint ((pt2Coord(1) - Y)/dScale)end if'MsgBox (pt1Coord(0))'MsgBox Xif dAngle>0 thenX1=Cint((pt1Coord(1)-Y)/dScale) Y1=Cint ((pt1Coord(0) -X)/dScale) X2= Cint ((pt2Coord(1)-Y)/dScale) Y2= Cint ((pt2Coord(0)-X)/dScale)end ifif dAngle<0 thenX1=Cint((pt1Coord(1)-Y)/dScale) Y1=Cint ((pt1Coord(0) -X)/dScale) X2= Cint ((pt2Coord(1)-Y)/dScale) Y2= Cint ((pt2Coord(0)-X)/dScale)end ifX1 = D * Cint(X1/D)Y1 = D * Cint (Y1/D)X2= D * Cint (X2/D)Y2 = D * Cint (Y2/D)nx = (X2-X1) \ D 'The number of the horizontal line ny = (Y2-Y1) \ D 'The number of the vertical lineDim Line2D1 As Line2DDim Circle2D1 as Circle2DDim MyText as DrawingTextDim iFontsize as DoubleDim i As IntDim j As IntDim R As Doubel 'the radius of the circleiFontSize = 3.5R=8R=R / dScale'------------------------------------------------------Dim Di_H,Di_V as intDim Text_XYZ_H as stringDim Text_XYZ_V as stringDi_H=1Di_V=1'Compare the drawing view HV with 3D Aixes Dim XX1,YY1,ZZ1,XX2,YY2,ZZ2 as int oDrwView.GenerativeBehavior.GetProjectionPlane XX1,YY1,ZZ1,XX2,YY2,ZZ2if (XX1=1) thenText_XYZ_H="X"End ifif (XX1=-1) thenText_XYZ_H="X"Di_H=-1End ifif (YY1=1) thenText_XYZ_H="Y"End ifif (YY1=-1) thenText_XYZ_H="Y"Di_H=-1End ifif (ZZ1=1) then Text_XYZ_H="Z"End ifif (ZZ1=-1) then Text_XYZ_H="Z"Di_H=-1End ifif (XX2=1) then Text_XYZ_V="X"End ifif (XX2=-1) then Text_XYZ_V="X"Di_V=-1End ifif (YY2=1) then Text_XYZ_V="Y"End ifif (YY2=-1) then Text_XYZ_V="Y"Di_V=-1End ifif (ZZ2=1) thenText_XYZ_V="Z"End ifif (ZZ2=-1) thenText_XYZ_V="Z"Di_V=-1End ifif dAngle>0 thenDi_V=-Di_Vend ifif dAngle<0 thenDi_H=-Di_Hend ifDim oSel as SelectionDim oVisProps as VisPropertySet set oSel = oDrwDocument.SelectionoSel.ClearDim TextV As intTextV=R/2'Draw the horizontall linefor i=0 TO nyif dAngle=0 thenset Line2D1 = oFactory2D.CreateLine(X1-D/3,Y1+D*i,X1+nx*D+D/3,Y1+D*i)oSel.Add Line2D1set Circle2D1=oFactory2D.CreateClosedCircle(X1-D/3-R,Y1+D*i,R)oSel.Add Circle2D1set Line2D1=oFactory2D.CreateLine(X1-D/3-R*2,Y1+D*i,X1-D/3,Y1+D*i)oSel.Add Line2D1Set MyText = oDrwView.Texts.Add(Text_XYZ_V,X1-D/3-R,Y1+D*i+TextV)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText = oDrwView.Texts.Add((Y1+D*i)*Di_V,X1-D/3-R,Y1+D*i-TextV)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifif dAngle>0 thenset Line2D1 = oFactory2D.CreateLine(X1-D/3,-Y1-D*i,X1+nx*D+D/3,-Y1-D*i)oSel.Add Line2D1set Circle2D1=oFactory2D.CreateClosedCircle(X1+nx*D+D/3+R,-Y1-D*i,R)oSel.Add Circle2D1set Line2D1=oFactory2D.CreateLine(X1+nx*D+D/3+R,-Y1-D*i+R,X1+nx*D+D/3+R,-Y1-D*i-R)oSel.Add Line2D1Set MyText = oDrwView.Texts.Add(Text_XYZ_V,X1+nx*D+D/3+R+TextV,-Y1-D*i)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText = oDrwView.Texts.Add((Y1+D*i)*Di_V,X1+nx*D+D/3+R-TextV,-Y1-D*i)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifif dAngle<0 thenset Line2D1 = oFactory2D.CreateLine(-X1+D/3,Y1+D*i,-(X1+nx*D+D/3),Y1+D*i)oSel.Add Line2D1setCircle2D1=oFactory2D.CreateClosedCircle(-(X1+nx*D+D/3)-R,Y1+D*i,R)oSel.Add Circle2D1set Line2D1=oFactory2D.CreateLine(-X1-nx*D-D/3-R,Y1+D*i+R,-X1-nx*D-D/3-R,Y1+D*i-R)oSel.Add Line2D1Set MyText = oDrwView.Texts.Add(Text_XYZ_V,-X1-nx*D-D/3-R+TextV,Y1+D*i)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText = oDrwView.Texts.Add((Y1+D*i)*Di_V,-X1-nx*D-D/3-R-TextV,Y1+D*i)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifnext'Draw the vertical linefor j=0 TO nxif dAngle=0 thenset Line2D1 = oFactory2D.CreateLine(X1+D*j,Y1-D/3,X1+D*j,Y1+ny*D+D/3)oSel.Add Line2D1setCircle2D1=oFactory2D.CreateClosedCircle(X1+D*j,Y1+ny*D+D/3+R,R)oSel.Add Circle2D1set Line2D1 =oFactory2D.CreateLine(X1+D*j-R,y1+ny*D+D/3+R,X1+D*J+R,y1+ny*D+D/3+R)oSel.Add Line2D1Set MyText =oDrwView.Texts.Add(Text_XYZ_H,X1+D*j,Y1+ny*D+D/3+R+TextV)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText =oDrwView.Texts.Add((X1+D*j)*Di_H,X1+D*j,y1+ny*D+D/3+R-TextV)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifif dAngle>0 thenset Line2D1 = oFactory2D.CreateLine(X1+D*j,-Y1+D/3,X1+D*j,-Y1-ny*D-D/3)oSel.Add Line2D1setCircle2D1=oFactory2D.CreateClosedCircle(X1+D*j,-Y1+D/3+R,R)oSel.Add Circle2D1set Line2D1 =oFactory2D.CreateLine(X1+D*j,-Y1+D/3+R*2,X1+D*J,-Y1+D/3)oSel.Add Line2D1Set MyText =oDrwView.Texts.Add(Text_XYZ_H,X1+D*j+TextV,-Y1+D/3+R)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText =oDrwView.Texts.Add((X1+D*j)*Di_H,X1+D*j-TextV,-Y1+D/3+R)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifif dAngle<0 thenset Line2D1 = oFactory2D.CreateLine(-X1-D*j,Y1-D/3,-X1-D*j,Y1+ny*D+D/3)oSel.Add Line2D1set Circle2D1=oFactory2D.CreateClosedCircle(-X1-D*j,Y1-D/3-R,R)oSel.Add Circle2D1set Line2D1 =oFactory2D.CreateLine(-X1-D*j,Y1-D/3-R*2,-X1-D*J,Y1-D/3)oSel.Add Line2D1Set MyText =oDrwView.Texts.Add(Text_XYZ_H,-X1-D*j+TextV,Y1-D/3-R)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText =oDrwView.Texts.Add((X1+D*j)*Di_H,-X1-D*j-TextV,Y1-D/3-R)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifnextdim oFontSize As long' MyText.SetFontSize 0, 0, iFontSizeset oVisProps = oSel.VisProperties oVisProps.SetRealWidth 1,0 '1st parameter line width 1-63 2nd parameter inheritance flag 1 or 0oVisProps.SetRealColor 0,255,0,1Set oVisProps = NothingSet oSel = Nothing' Update drawing table modificationsCATIA.ActiveWindow.ActiveViewer.ReframeEnd Sub=========这里结束,不要复制我========3.保存Draw-Grid.txt,然后将文件后缀改为CATScript即Draw-Grid.CATScript,就可以使用了使用方法:1.在Catia工程制图界面激活要创建百格线的视图2.在改视图里边创建两个点,这两个点分别是百格线的左下角和右上角点3.按ALT+F8打开宏库,导入刚才创建的宏a.按ALT+F8出现一个界面,然后点宏库b.库类型中选择“目录”—>“添加现有库”—>“浏览”,选取刚才创建的Draw-Grid.CATScript,确定后关闭4.点运行—>确定—>选左下角点—>确定—>选右上角点百格线至此就全部完成了。
CATIA软件宏编写与应用实例
CATIA软件宏编写与应用实例CATIA是由法国达索系统公司开发的一款三维CAD软件,它在航空航天、汽车设计、工业制造等领域有着广泛的应用。
CATIA软件的宏编写功能为用户提供了个性化定制的能力,能够帮助用户简化工作流程、提高工作效率。
本文将介绍CATIA软件宏编写的基本知识,并结合实际应用场景,分享一些宏编写与应用的实例。
一、CATIA软件宏编写的基本知识1. 宏的定义和作用宏是一段用Visual Basic for Applications(VBA)语言编写的程序代码,用于自动化执行CATIA软件中的操作。
通过编写宏,可以实现自动建模、批量处理、快速创建标准零件等功能,大大提高了设计和制造的效率。
2. VBA语言的基本语法VBA是一种基于Visual Basic的编程语言,简单易学。
在CATIA 软件中,可以通过“工具”菜单下的“宏”功能进入VBA编辑器,编写和编辑宏程序。
VBA语言的基本语法包括变量声明、条件语句、循环语句和函数等,这些知识是编写CATIA宏的基础。
3. CATIA软件对象模型CATIA软件中的每个对象都有对应的属性和方法,通过它们可以对CATIA进行控制和操作。
CATIA软件对象模型对于宏编写非常重要,需要了解不同对象的层级结构和相应的属性、方法,才能编写出有效的宏程序。
二、CATIA软件宏编写与应用实例1. 自动创建标准零件在CATIA软件中,经常需要创建标准零件,比如螺栓、螺母等。
通过编写宏,可以实现自动创建标准零件的功能。
例如,编写一个螺栓生成的宏,可以通过输入参数(如直径、长度等)自动生成螺栓,并自动应用所需的材料和尺寸。
2. 批量导入图纸在CATIA软件中,导入图纸是一个重复且耗时的操作。
通过编写宏,可以实现批量导入图纸的功能。
例如,编写一个批量导入图纸的宏,可以选择多个图纸文件,自动将它们导入到CATIA软件中,并进行相应的缩放和对齐操作,提高工作效率。
3. 参数化建模CATIA软件提供了强大的建模功能,通过编写宏,可以实现参数化建模的功能。
CATIA软件二次开发实践指南
CATIA软件二次开发实践指南CATIA是由法国达索系统公司(Dassault Systèmes)开发的一款世界领先的三维设计软件。
它广泛用于航空航天、汽车制造、工业设计等领域。
为了满足用户特定的定制需求,CATIA软件支持二次开发,这使得用户可以根据自身需要对CATIA进行功能扩展和定制。
本篇文章将为读者介绍如何进行CATIA软件的二次开发,并提供一些实用的开发实践指南。
一、二次开发环境搭建在开始CATIA软件的二次开发之前,我们需要搭建相应的开发环境。
首先,确保已安装CATIA软件,并具备基本的CATIA使用经验。
其次,要安装CATIA官方提供的开发工具包CATIA Customization Tools(CCT)。
CCT是一套特殊的插件和工具,可以帮助开发者进行CATIA的定制和开发。
安装完成后,启动CATIA,选择“工具-集中管理-定制工具”命令,确保CCT已成功安装并可用。
二、二次开发的基本概念在进行CATIA二次开发之前,了解一些基本概念是很重要的。
CATIA软件基于面向对象的编程思想,开发者需要熟悉CATIA的对象模型和相关API接口。
对象模型描述了CATIA软件中各个元素之间的关系和属性,开发者通过调用API接口对CATIA进行操作和扩展。
例如,我们可以通过API接口创建、编辑、删除CATIA中的零件、装配、图纸等对象。
三、CATIA二次开发的实践指南1. 熟悉CATIA对象模型:详细了解CATIA对象模型可以帮助开发者深入理解CATIA软件的内部结构和机制。
CATIA的对象模型按照层次结构组织,从最顶层的“CATIA.Application”到最底层的具体对象,开发者可以根据自身需求在对象模型中定位到所需的对象。
2. 学习API文档和示例:CATIA提供了详细的API文档,其中包含了各种API接口的详细说明和使用示例。
开发者可以通过阅读API文档来学习如何调用CATIA提供的接口和方法。
CATIA功能介绍
CATIA功能介绍装配设计(ASS)CATIA装配设计可以使设计师建立并管理基于3D零件机械装配件。
装配件可以由多个主动或被动模型中的零件组成。
零件间的接触自动地对连接进行定义,方便了CATIA运动机构产品进行早期分析。
基于先前定义零件的辅助零件定义和依据其之间接触进行自动放置,可加快装配件的设计进度,后续应用可利用此模型进行进一步的设计、分析、制造等。
Drafting(DRA)CATIA制图产品是2D线框和标注产品的一个扩展。
制图产品使用户可以方便地建立工程图样,并为文本、尺寸标注、客户化标准、2D参数化和2D浏览功能提供一整套工具。
Draw-Space(2D/3D)Integration(DRS)CATIA绘图-空间(2D/3D)集成产品将2D和3DCATIA环境完全集成在一起。
该产品使设计师和绘图员在建立2D图样时从3D几何中生成投影图和平面剖切图。
通过用户控制模型间2D 到3D相关性,系统可以自动地由3D数据生成图样和剖切面。
CATIA特征设计模块(FEA)CATIA特征设计产品通过把系统本身提供的或客户自行开发的特征用同一个专用对话结合起来,从而增强了设计师建立棱柱件的能力。
这个专用对话着重于一个类似于一族可重新使用的零件或用于制造的设计过程。
钣金设计(SheetmetalDesign)CATIA钣金设计产品使设计和制造工程师可以定义、管理并分析基于实体的钣金件。
采用工艺和参数化属性,设计师可以对几何元素增加象材料属性这样的智能,以获取设计意图并对后续应用提供必要的信息。
高级曲面设计(ASU)CATIA高级曲面设计模块提供了可便于用户建立、修改和光顺零件设计所需曲面的一套工具。
高级曲面设计产品的强项在于其生成几何的精确度和其处理理想外形而无需关心其复杂度的能力。
无论是出于美观的原因还是技术原因,曲面的质量都是很重要的白车身设计(BWT)白车身设计产品对设计类似于汽车内部车体面板和车体加强筋这样复杂的薄板零件提供了新的设计方法。
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中批量创建点和曲线
一、查找catia安装目录下"/>\intel_a\code\command\GSDPointSplineLoftFromExcel.xls文件。
打开文件GSDPointSplineLoftFromExcel.xls,界面如下:二、在StartCurve和EndCurve之间的一组数值是点的坐标值,每一组点连成一条样条曲线。
每一行的三个数值分别代表X、Y、Z坐标。
同时可以画出若干样条曲线。
如果需要,可以用这些样条曲线创建放样曲面。
用每一对StartLoft、EndLoft之间的样条曲线创建一个放样曲面。
三、打开CATIA V5,进入Generative Shape Design,使要在其中创建点和样条曲线的文件处于激活状态,这个文件必须是CATPart文件,并且至少包含一个OpenBody:四、运行宏程序,步骤如下:1、单击菜单“工具”à“宏”à“宏”:2、显示宏对话框后,执行宏 Feuil1.Main3、对话框弹出后:选1生成点选2生成点和曲线选3生成点、曲线和loft曲面4、选择2,单击“执行”。
运行结果如下:5、选择3,单击“执行”。
运行结果如下:在实际的工作中,用户的原始坐标数据往往不是EXCEL格式,需要转换成EXCEL 格式,填充坐标值区域,用来生成点和曲线。
用户的原始坐标数据通常用文本文件等格式存放,例如:对上述问题,请按如下步骤进行操作:一、这种格式的数据不能在EXCEL里直接使用,要把这些数据导入EXCEL,用EXCEL 打开该文件,出现如下对话框:二、对于文件类型,选择“分隔符号”,而非“固定宽度”:三、然后单击“下一步”,选择空格(如果是用其他分隔符分隔坐标值,选择相应的分隔符):四、单击“完成”,数据即导入EXCEL:五、共有十行数据,要把它们粘贴到文件GSD_PointSplineLoftFromExcel. xls,先在该文件中准备十行空间。
CATIA阵列宏实现
CATIA阵列宏实现
CA TIA 阵列宏实现初级教程
1.阵列的初步种类
●无参数阵列此类阵列具有简单的旋转和平移的功能。
类似于copy。
●有参数阵列此类阵列在旋转和平移的同时能够对被copy的特征的参数进行控
制,象变化半径的大小。
●尺寸驱动阵列此类阵列用特征内部尺寸来驱动。
●线性阵列特征能够沿曲线copy
●随形阵列更高级的阵列,不但能对特征的参数进行控制,还能保持被copy特征
与其它外部特征的几何关系。
2. CATIA 阵列的特点
●CATIA的阵列功能是有限的,在这个方面上是落后于Solidworks。
●但是CATIA提供的宏的功能却远远的补偿了这个缺陷。
3.这个小例子里演示了如何做一个pattern过程中随曲线变化半径大小的宏过程。
●录制后的宏存储在指定的目录下,方便下次调用。
●宏也可以存储在part里边。
4.例中的i是一个变量,控制循环的次数。
这里循环10次。
●圆心到原点的距离在每次调用中是不同的。
这里是4*i。
因为曲线的大概长度是
43mm。
那么循环10次后,圆刚好阵列到曲线的边缘。
●很明显这样的阵列保存了圆和曲线的相切关系。
希望这个教程对你有所启发。
说得不好请见谅。
呵呵。
Xiaozhiwwww
小指。
catia vba常用语句
catia vba常用语句Catia VBA是一种用于自动化设计和分析的编程语言,通过使用VBA 语句,可以在Catia软件中实现各种自定义功能。
下面列举了一些常用的Catia VBA语句。
1. 打开一个已有的Catia文档:```Documents.Open("C:\Path\to\file.CATPart")```2. 创建一个新的Catia文档:```Documents.Add("Part")```3. 选择一个已有的零件:```Selection.Search("PartNumber='12345'")```4. 创建一个新的零件:```PartDocument.Part.Create```5. 在零件中创建一个新的草图:```PartDocument.Part.HybridBodies.AddPartDocument.Part.HybridBodies.Item("GeometricalSet.1").HybridSketches.Add```6. 在草图中创建一个新的线:```PartDocument.Part.HybridBodies.Item("GeometricalSet.1").HybridSketches.Item("Sketch.1").AppendHybridShape ```7. 创建一个新的孔特征:```PartDocument.Part.HybridBodies.Item("GeometricalSet.1").HybridSketches.Item("Sketch.1").HybridShapes.AddNew Hole```8. 修改一个特征的参数:```PartDocument.Part.UpdatePartDocument.Part.HybridBodies.Item("GeometricalSet.1").HybridSketches.Item("Sketch.1").HybridShapes.Item(" Hole.1").Parameters.Item("Diameter").Value = 10```9. 运行一个已有的宏:```CATIA.StartCommand "MacroName"```10. 保存当前文档:```Documents.Save```以上是一些常用的Catia VBA语句,可以帮助我们实现各种自定义功能。
基于CATIA宏的零件属性自动添加方法研究
基于CATIA宏的零件属性自动添加方法研究作者:宋瑜郝泳涛来源:《电脑知识与技术》2012年第07期摘要:宏(Macro)是为了实现多任务执行的自动化而组合在一起的一系列的命令和指令。
该文引入宏这一概念,并通过编程自定义宏来实现对零件属性的自动添加。
基于宏的概念,该文提出一种基于CATIA宏的零件属性自动添加方法。
该方法可以替代传统手动添加的方法,提高生产效率。
关键词:宏(Macro);CATIA;属性添加中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)07-1659-03The Methodology of Automatic Attachment of Attributions in Part Designing Based on CATIA MacrosSONG Yu, HAO Yong-tao(CAD Research Center of Tongji University, Shanghai 201804, China)Abstract: Macro is the combination of a series of commands and instructions, which are aimed at automation of executions of multitask. In this paper, the conception of macro is introduced and used to achieve the attribution attachment of parts by programming the custom macros. Based on the macro, a methodology of automatic attachment of attributions in part designing is proposed, which can replace the traditional and improve the efficiency.Key words: Macro; CATIA; attribution attachment随着计算机和数字控制技术的发展,计算机辅助设计及制造(CAD/CAM)已经广泛应用于产品设计和机械制造领域中。
CATIA工程图宏教程
CATIA工程图宏教程工程图百格线教程你是否为在Catia做2D图纸的时候,画百格线而伤脑筋呢?别担心,接下来我告诉你一个简单的方法1.新建一个txt文本文档,比如Draw-Grid.txt2.把以下内容复制到Draw-Grid.txt中=========这里开始,不要复制我========Option Explicit'******************************************************************* ****' Purpose: This macro allows you to create Grid line in CATIA drawing' Author: chenqa' Languages: VBScript' Locales: English' Developing CATIA Level: V5R12' View mush parallel to system aixes,view angle 0deg,90deg and -90deg ' ******************************************************************* ****Sub CATMain()CATIA.RefreshDisplay = FalseDim sStatus As String' Set the CATIA popup file alerts to False' It prevents to stop the macro at each alert during its execution CATIA.DisplayFileAlerts = False' Optional: allows to find the sample wherever it's installed' Variables declarationDim oDrwDocument As DrawingDocumentDim oDrwSheets As DrawingSheetsDim oDrwSheet As DrawingSheetDim oDrwView As DrawingViewDim oFactory2D AS Factory2D' The Distance between the linesDim D As IntegerDim nx As IntegerDim ny As Integer' The point coordinate select from DrawingDim X1 As IntegerDim Y1 As IntegerDim X2 As IntegerDim Y2 As IntegerDim Pt1 As Point2DDim Pt2 As Point2D'The view scale dAngle for rotate view scale for view scaleDim dScale,dAngle As Double'The view coordinate originDim X As IntDim Y As IntDim xSel As INFITF.SelectionD= InputBox("Please Input the Distance Value", "input box", "100")D= Cint (D)' Retrive a new drawing documentSet oDrwDocument = CATIA.ActiveDocument' Retrieve the drawing document's sheets collectionSet oDrwSheets = oDrwDocument.Sheets' Retrieve the active sheetSet oDrwSheet = oDrwSheets.ActiveSheet' Retrieve the active view of the sheetSet oDrwView = oDrwSheet.Views.ActiveView'Retrive the value of the viewX= oDrwView.xAxisDataY= oDrwView.yAxisDatadScale = oDrwView.ScaledAngle= oDrwView.AngleSet oFactory2D = oDrwView.Factory2D'Get the coordinate from the select two point'On Error Resume NextSet xSel = CATIA.ActiveDocument.SelectionxSel.clearReDim sFilter(0)sFilter(0) = "Point2D"MsgBox "Please select the left-bottom point "sStatus = xSel.SelectElement2(sFilter, "Select First Point.", false)If (sStatus = "Normal") ThenDim SelectedPoint1 As SelectedElementSet SelectedPoint1 = xSel.Item(1)Dim pt1Coord(2) As IntSelectedPoint1.GetCoordinates ( pt1Coord )'MsgBox "The frst point has been selected "Else MsgBox "Select a 2D Point 1"Exit SubEnd IfMsgBox "Please select the ritht-top point "sStatus = xSel.SelectElement2(sFilter, "Select The SecondPoint.",false)If (sStatus = "Normal") ThenDim SelectedPoint2 As SelectedElementSet SelectedPoint2 = xSel.Item(1)Dim pt2Coord(2) As IntSelectedPoint2.GetCoordinates ( pt2Coord )'MsgBox "The second point has been selected "Else MsgBox "Select a 2D point 1"Exit SubEnd Ifif dAngle=0 thenX1= Cint( (pt1Coord(0) - X)/dScale) Y1= Cint ((pt1Coord(1) - Y)/dScale) X2= Cint ((pt2Coord(0) - X)/dScale) Y2= Cint ((pt2Coord(1) - Y)/dScale)end if'MsgBox (pt1Coord(0))'MsgBox Xif dAngle>0 thenX1=Cint((pt1Coord(1)-Y)/dScale) Y1=Cint ((pt1Coord(0) -X)/dScale) X2= Cint ((pt2Coord(1)-Y)/dScale) Y2= Cint ((pt2Coord(0)-X)/dScale)end ifif dAngle<0 thenX1=Cint((pt1Coord(1)-Y)/dScale) Y1=Cint ((pt1Coord(0) -X)/dScale) X2= Cint ((pt2Coord(1)-Y)/dScale) Y2= Cint ((pt2Coord(0)-X)/dScale)end ifX1 = D * Cint(X1/D)Y1 = D * Cint (Y1/D)X2= D * Cint (X2/D)Y2 = D * Cint (Y2/D)nx = (X2-X1) \ D 'The number of the horizontal line ny = (Y2-Y1) \ D 'The number of the vertical lineDim Line2D1 As Line2DDim Circle2D1 as Circle2DDim MyText as DrawingTextDim iFontsize as DoubleDim i As IntDim j As IntDim R As Doubel 'the radius of the circleiFontSize = 3.5R=8R=R / dScale'------------------------------------------------------Dim Di_H,Di_V as intDim Text_XYZ_H as stringDim Text_XYZ_V as stringDi_H=1Di_V=1'Compare the drawing view HV with 3D Aixes Dim XX1,YY1,ZZ1,XX2,YY2,ZZ2 as int oDrwView.GenerativeBehavior.GetProjectionPlaneXX1,YY1,ZZ1,XX2,YY2,ZZ2if (XX1=1) thenText_XYZ_H="X"End ifif (XX1=-1) thenText_XYZ_H="X"Di_H=-1End ifif (YY1=1) thenText_XYZ_H="Y"End ifif (YY1=-1) thenText_XYZ_H="Y"Di_H=-1End ifif (ZZ1=1) then Text_XYZ_H="Z" End ifif (ZZ1=-1) then Text_XYZ_H="Z" Di_H=-1End ifif (XX2=1) then Text_XYZ_V="X" End ifif (XX2=-1) then Text_XYZ_V="X" Di_V=-1End ifif (YY2=1) then Text_XYZ_V="Y" End ifif (YY2=-1) then Text_XYZ_V="Y" Di_V=-1End ifif (ZZ2=1) thenText_XYZ_V="Z"End ifif (ZZ2=-1) thenText_XYZ_V="Z"Di_V=-1End ifif dAngle>0 thenDi_V=-Di_Vend ifif dAngle<0 thenDi_H=-Di_Hend ifDim oSel as SelectionDim oVisProps as VisPropertySet set oSel = oDrwDocument.SelectionoSel.ClearDim TextV As intTextV=R/2'Draw the horizontall linefor i=0 TO nyif dAngle=0 thenset Line2D1 = oFactory2D.CreateLine(X1-D/3,Y1+D*i,X1+nx*D+D/3,Y1+D*i)oSel.Add Line2D1set Circle2D1=oFactory2D.CreateClosedCircle(X1-D/3-R,Y1+D*i,R)oSel.Add Circle2D1set Line2D1=oFactory2D.CreateLine(X1-D/3-R*2,Y1+D*i,X1-D/3,Y1+D*i) oSel.Add Line2D1Set MyText = oDrwView.Texts.Add(Text_XYZ_V,X1-D/3-R,Y1+D*i+TextV)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText = oDrwView.Texts.Add((Y1+D*i)*Di_V,X1-D/3-R,Y1+D*i-TextV)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifif dAngle>0 thenset Line2D1 = oFactory2D.CreateLine(X1-D/3,-Y1-D*i,X1+nx*D+D/3,-Y1-D*i)oSel.Add Line2D1set Circle2D1=oFactory2D.CreateClosedCircle(X1+nx*D+D/3 +R,-Y1-D*i,R)oSel.Add Circle2D1set Line2D1=oFactory2D.CreateLine(X1+nx*D+D/3+R,-Y1-D*i+R,X1+nx*D+D/3+R,-Y1-D*i-R)oSel.Add Line2D1Set MyText = oDrwView.T exts.Add(Text_XYZ_V,X1+nx*D+D/3+R+TextV,-Y1-D*i)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText = oDrwView.T exts.Add((Y1+D*i)*Di_V,X1+nx*D+D/3+R -TextV,-Y1-D*i)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifif dAngle<0 thenset Line2D1 = oFactory2D.CreateLine(-X1+D/3,Y1+D*i,-(X1+nx*D+D/3),Y1+D*i)oSel.Add Line2D1setCircle2D1=oFactory2D.CreateClosedCircle(-(X1+nx*D+D/3)-R,Y1+D*i,R)oSel.Add Circle2D1set Line2D1=oFactory2D.CreateLine(-X1-nx*D-D/3-R,Y1+D*i+R,-X1-nx*D-D/3-R,Y1+D*i-R)oSel.Add Line2D1Set MyText = oDrwView.Texts.Add(Text_XYZ_V,-X1-nx*D-D/3-R+TextV,Y1+D*i)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText = oDrwView.Texts.Add((Y1+D*i)*Di_V,-X1-nx*D-D/3-R-TextV,Y1+D*i)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifnext'Draw the vertical linefor j=0 TO nxif dAngle=0 thenset Line2D1 = oFactory2D.CreateLine(X1+D*j,Y1-D/3,X1+D*j,Y1+ny*D+D/3)oSel.Add Line2D1setCircle2D1=oFactory2D.CreateClosedCircle(X1+D*j,Y1+ny*D +D/3+R,R)oSel.Add Circle2D1set Line2D1 =oFactory2D.CreateLine(X1+D*j-R,y1+ny*D+D/3+R,X1+D*J+R,y1+ny*D+D/3+R)oSel.Add Line2D1Set MyText =oDrwView.T exts.Add(Text_XYZ_H,X1+D*j,Y1+ny*D+D/3+R+ TextV)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText =oDrwView.T exts.Add((X1+D*j)*Di_H,X1+D*j,y1+ny*D+D/3+ R-TextV)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifif dAngle>0 thenset Line2D1 = oFactory2D.CreateLine(X1+D*j,-Y1+D/3,X1+D*j,-Y1-ny*D-D/3)oSel.Add Line2D1setCircle2D1=oFactory2D.CreateClosedCircle(X1+D*j,-Y1+D/3+R,R)oSel.Add Circle2D1set Line2D1 =oFactory2D.CreateLine(X1+D*j,-Y1+D/3+R*2,X1+D*J,-Y1+D/3)oSel.Add Line2D1Set MyText =oDrwView.T exts.Add(Text_XYZ_H,X1+D*j+TextV,-Y1+D/3+R) MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText =oDrwView.T exts.Add((X1+D*j)*Di_H,X1+D*j-TextV,-Y1+D/3+R)MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifif dAngle<0 thenset Line2D1 = oFactory2D.CreateLine(-X1-D*j,Y1-D/3,-X1-D*j,Y1+ny*D+D/3)oSel.Add Line2D1set Circle2D1=oFactory2D.CreateClosedCircle(-X1-D*j,Y1-D/3-R,R)oSel.Add Circle2D1set Line2D1 =oFactory2D.CreateLine(-X1-D*j,Y1-D/3-R*2,-X1-D*J,Y1-D/3) oSel.Add Line2D1Set MyText =oDrwView.T exts.Add(Text_XYZ_H,-X1-D*j+TextV,Y1-D/3-R) MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeSet MyText =oDrwView.T exts.Add((X1+D*j)*Di_H,-X1-D*j-TextV,Y1-D/3-R) MyText.AnchorPosition = catMiddleCenterMyText.SetFontSize 0, 0, iFontSizeend ifnextdim oFontSize As long' MyText.SetFontSize 0, 0, iFontSizeset oVisProps = oSel.VisProperties oVisProps.SetRealWidth 1,0 '1st parameter line width 1-63 2nd parameter inheritance flag 1 or 0oVisProps.SetRealColor 0,255,0,1Set oVisProps = NothingSet oSel = Nothing' Update drawing table modificationsCATIA.ActiveWindow.ActiveViewer.ReframeEnd Sub=========这里结束,不要复制我========3.保存Draw-Grid.txt,然后将文件后缀改为CATScript即Draw-Grid.CATScript,就可以使用了使用方法:1.在Catia工程制图界面激活要创建百格线的视图2.在改视图里边创建两个点,这两个点分别是百格线的左下角和右上角点3.按ALT+F8打开宏库,导入刚才创建的宏a.按ALT+F8出现一个界面,然后点宏库b.库类型中选择“目录”—>“添加现有库”—>“浏览”,选取刚才创建的Draw-Grid.CATScript,确定后关闭4.点运行—>确定—>选左下角点—>确定—>选右上角点百格线至此就全部完成了。
CATIA的一些小技巧
CATIA的一些小技巧!1:如何快速知道当前的CATIA作图区上的零件的放大比例?答:选中TOOLS----->OPTIONS----->VISUALIZATION----> DISPLAY CURRENT SCALE IN PARALLEL, MODE 的选项. 在屏幕的右下方的数值表示当前作图区内的几何体的显示比例.2:如何快速定义草图方向?答:按CTRL键点选在草图中做为X轴的边,再选择草图平面, 然后选择草图功能.草图自动转到所需的方向.3:如何再SKETCHER 中动态调整尺寸?答:选中已标注的实体,再按住SHIFT键,,然后拖动实体, 则实体上标注的尺寸值会动态变化.4:当启动CATIA时,总是会产生一个新的CATPRODUCT 档, 怎样才可以避难?答:可以在START--->ALL PROGRAMES--->TOOLS---> ENVIRONMENT EDITOR V5R** 中创建一个新的环境变数, NAME:CATNOSTARTDOCUMENTVALUE:YES 就可以改变这种问题了.5:从CATIA来的有些MODEL 档,在读取时出现PROJICTCONFLICT 的信息,要怎样才能读取?答: 在$HOME 的目录下,修改USRENV.DCLS 这个档案, 在其中加入ATSITE,PRJMODEL=TRUE;这一行就可. (UNIX环境)6:如何在进入CATIA sketcher workbench 的时候,跳过动画,以加速显示速度?答:TOOLS--->OPTIONS--->DESPLAY---->NAVIGATION---> NAVIGATION, UNCHECK "ANIMATION DURINGVIEWPOINT MODIFICATION". 就可禁止动画.7:如何改变系统默认的坐标平面的大小以及颜色?答:TOOLS--->OPTIONS--->INFRASTRUCTURE------>PARTINFRASTRUCRE---->DISPLAY---->DISPLAY IN GEOMETRY AREA---->AXISSYSTEM DISPLAY SIZE (IN MM),把默认值从10改为40.60等等,就可改变基准面的尺寸大小,但颜色只能在界面上GRAPHIC PROPERTIES 工具上直接改了.8:如何在特征树和实体之间进行切换?答:大家所知的可能就是在特征树上点击或在屏幕右下角的坐标系上点击.在这里小弟介绍一种方法前提是你的鼠标是三键的) 按住CTRL然后滑动鼠标上的滚轮就OK了.9:如果你的三键鼠标突然坏了,家里又只有两键的,那怎么办? 我有好方法,其实就是CATIA 的功能.答:打开TOOLS--->OPTION--->DEVICES AND VIRTUAL REALITY ;然后在TABEL SUPPORT 里进行编辑就行了. 怎样,看到在你的界面上那些功能表了,这样你就可以继续学习工作了.10:当你的CATIA里打开多个文档时,有没有快速转换窗口?答:按住CTRL键,然后按动TAB键就可快速转换窗口了.11:在CATIA中如何快速适时缩放?答:先按CTRL键再按鼠标中键是放大缩小. 先按鼠标中键再按CTRL键是旋转.12:在命令执行过程中,如何暂时隐藏命令对话方块?答:点击荧屏右下角输入框右边的按钮旧可隐藏.13:右没有快捷的方法在装配中多次调入同一零件?答:在当前装配文件下,先用INSERT--->EXISTING COMPONENT 调入所需零件,然后选择这个零件,在点击INSERT---->FAST MULTI INSTANTIATE 就可以再次快速调入.还可以在DEFINE MULTI INSTANTIAATE 中定义一次调入同一零件的个数,实现一次调入多个相同的零件.CATIA快捷键等设置(Self-defined)一.键盘部分1.帮助F1――CATIA V5 帮助Shift+F1――这是什么?2.编辑Ctrl+Z――撤消Ctrl+C――复制Ctrl+X――剪切Del――删除# Shift+Enter――特性(properties)Ctrl+G――选择集...Ctrl+V――粘贴Ctrl+Y――重复(redo)3.工具Alt+F11――Visual Basic 编辑器...(物体选择器,键盘方向键可以选择目标) Alt+F8――宏...# Ctrl+Shift+U――定制...(定制工作台)4.文件Ctrl+S――保存Ctrl+O――打开...Ctrl+P――打印...Ctrl+N――新建...5.选择Ctrl+F――搜索...6.全部命令F8――Drop compass planeF5――Flip compass baseCtrl+A ――Flood SelectCtrl+I――Invert SelectF7――Reset compass to XYZF6――Set compass orientationF9――Stretch ViewCtrl+U ――UpdateShift+F2――规格概观F3――规格(隐藏目录树)Ctrl+D ――Fast Multi Instantiation Ctrl+E――Define Multi Instantiation... Ctrl+W――Group in new set以下全为自定义快捷键:7.视图Ctrl+KP_Add――放大Ctrl+KP_Subtract――缩小Ctrl+Shift+B――交换可见空间Ctrl+Shift+Z――夸大...Alt+P――平移Alt+F――适合全部Ctrl+Shift+F――全屏Alt+Z――缩放F2――缩放区域Alt +A――上一个视图Alt +D――下一个视图Ctrl+R――旋转Ctrl+B――隐藏/显示Ctrl+KP_0――全部折叠Ctrl+KP_1――展开第一个级别Ctrl+KP_2――展开第二个级别Ctrl+KP_3――展开所有级别Ctrl+Shift+V――已命名的视图...Ctrl+H ――转头Ctrl+T――透视Ctrl+Alt+F――飞行8.文件Ctrl+Shift+Q――关闭Ctrl+Shift+A――另存为...Ctrl+Shift+S――目录(发送到目录)Ctrl+Alt+S――全部保存Ctrl+Shift+D――桌面...9.全部命令Ctrl+Q――退出工作台(应用于退出草图)注释:“#”表示自定义键。
CATIA二次开发
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平台上,脚本语⾔允许你使⽤宏以⼀个⾮常简单的⽅式来对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是一款流行的计算机辅助设计(CAD)软件,广泛应用于各种机械设计和制造领域。
在Catia中,循环语句是一种非常强大的功能,它可以让您在设计和制造中自动化许多繁琐的重复性任务。
在本文中,我们将介绍如何在Catia中使用循环语句。
步骤一:打开Catia软件并创建一个新的工程。
在工程中选择“Part Design”模块,在设计空间中创建一个新的零件。
这是我们将要应用循环语句的地方。
步骤二:打开Catia的宏编辑器。
在Catia界面的菜单栏中选择“Tools”-“Macro”-“Macro Editor”。
在宏编辑器中可以编写Catia的宏。
步骤三:编写循环宏。
在宏编辑器中编写以下代码来创建一个简单的循环宏。
该宏将创建一个圆柱体并将其复制多次。
循环体中的代码将循环执行直到达到循环结束条件。
可以通过设置循环变量的值来控制循环次数。
Sub CATMain()Dim i As IntegerFor i = 1 To 10Dim oPart As PartSet oPart = CATIA.ActiveDocument.PartDim oBody As BodySet oBody = oPart.Bodies.Add()Dim oSketch As SketchSet oSketch = oBody.Sketches.Add(oPlane1)oSketch.SetMode catObjectInheritDim oFactory2D As Factory2DSet oFactory2D = oSketch.OpenEditionDim oCircle As Circle2DSet oCircle = oFactory2D.CreateClosedCircle(0#, 0#, 10#)oSketch.CloseEditionDim oPad As PadSet oPad = oBody.Pads.Add(oSketch, 10#)CATIA.ActiveDocument.Selection.ClearNext iEnd Sub步骤四:运行循环宏。
31 CATIA 部培训文件- 宏的录制与调用
宏的录制与调用
以弯板式镶块中元素的发布为例介绍宏的录制和调用1.
宏的录制:
出现如下对话框:
点击Start
(出现停止对话框)开始录制宏,接下来就是
对元素进行发布的操作:
发布完成后点击上面弹出的停止对话框,至此该宏的录制就完成了。
2.宏的调用
a:方法一:直接调用宏
选中刚才录制的宏111,点击运行Run
发布完成
b:方法二(推荐):在工具条中调用或者设置快捷键
选择用户自定义Customize-->Commands-->Macros-->111.catvbs(按住左键不放,将其拖入工具条中)
工具条上的该宏来完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在CATIA中运用宏处理大量数据-->摘自catia技术论坛收藏一、引言
随着机械设计的不断发展,三维辅助设计软件在产品设计和加工中成为不可缺少的重要工具。
由于CATIA具有超强的自由曲面功能、逆向工程的功能及全面的组合分析功能,因此在世界范围内的航空航天及汽车工业中得到了广泛的应用。
在飞机设计过程中,飞机的外形建模过程往往是先从外部读入外形数据,然后在CATIA中对这些数据进行处理。
飞机外形数据通常是由许多点坐标组成,外形越精确,要求的数据就越多。
在CATIA中,输入点的方法通常是在Shape的Generative Shape Design界面下的Point命令栏中手工将数据输入。
飞机外形有成千上万个数据点,手动输入不仅费时,并且容易出错。
本篇文章介绍了采用宏命令来自动读入数据的方法,并对这些数据自动进行相关的绘图处理。
二、宏的定义
宏是一系列组合在一起的命令和指令,以实现多任务执行的自动化。
宏可以用下列几种脚本语言编写,这取决于操作系统:
☆Basicscript 2.2 sdk,用于Unix ;
☆Vbscript,Visual Basic的脚本语言,用于Windows NT系统;
☆Jscript,Javascript的一种应用,用于Windows NT系统。
三、创建宏和运行宏
1. 创建宏
宏可用于各种软件,其在各软件中的创建和运行基本相似,这里着重
介绍宏在CATIA中的创建和运行过程。
创建过程是:首先打开CATIA,新建一个文件,然后进入菜单Tools,打开子菜单Macro下的Macros (或用Alt+F8命令),此时打开一个窗口,如图1所示。
图1 宏命令打开窗口
在Macro Name下的输入框中命名一个宏的名字,如Macro1。
然后按Creat按钮,此时打开Macro Editor 窗口。
在此窗口的文本框内输入宏的代码,保存后,该宏就创建完成了,如图2所示。
图2 创建宏
2.运行宏
首先选择宏,因为宏可保存于内部文件,也可保存于外部文件,所以首先在宏窗口的左下角的下拉框中选择是内部文件还是外部文件。
如果是内部文件,则在宏窗口的文本框中会显示已创建的一系列宏,选择需要的宏,按下Run按钮,宏结果就可显示于窗口内。
如果是外部文件,则选择宏窗口左侧的Select按钮,选择宏所在的文件目录,按下Run按钮,同样,宏结果也显示于窗口内。
四、宏在CATIA中的应用
1.利用宏输入数据
宏在CATIA中的应用非常广泛,它与CATIA的内核及内部函数的调用集成得很好。
例如,在一个部件上打一系列的孔,从装配件上提取材料清单等等。
在实际工作中,飞机的外形数据存于Excel文件中,利用宏来读取Excel文件中的数据。
如果数据以其他文件格式保存,如
dat文件格式,可转换为Excel文件格式,或者直接更改代码,从其他文件中直接读取。
代码如下:
Language="VBscript" 因为本操作系统是windows2000,所以此宏是用vbscript编写的
Sub CATMain()
Dim partDocument1 As Document 创建文件
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part 创建部件
Set part1 = partDocument1.Part
dim excel as object 调用excel对象
set excel=getobject("d: \外形数据.xls") 飞机外形数据存于d: \外形数据.xls文件下
利用循环,读入excel中的数据。
此数据为飞机外形上的一些点的坐标值,这些值分别存于excel的表单1中的B、C、D中,把这些值分别赋给变量x,y,z
i=1
do while x<>””
x=excel.worksheets(1).cells.range("B" & trim(cstr(i))).value
y=excel.worksheets(1).cells.range("C" & trim(cstr(i))).value
z=excel.worksheets(1).cells.range("D" & trim(cstr(i))).value
·
·
·
定义点坐标
Dim hybridShapePointCoord1 As HybridShapePointCoord
Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(x,y,z)
·
·
·
输入点
hybridBody1.AppendHybridShape hybridShapePointCoord1
part1.InWorkObject = hybridShapePointCoord1
i=i+1
loop
part1.Update
End sub
按照创建和运行宏的步骤,把以上代码输入到自定义的一个宏的代码区中,保存并运行。
这样,“外形数据.xls”文件中的所有飞机外形数据都被读取出来。
CATIA系统为这些点自动编号,设计人员可从当前界面左侧最下一项Open Body.1的树形扩展目录中看到所有的点。
图3就是用此宏输入的机翼上的点。
保存此CATIA文件为jiyi.CATpart。
图3 宏输入数据
2.利用宏处理数据
为了得到飞机的外形,我们需要对已输入的点进行处理,即把这些点用Spline命令连成若干条样条曲线,再对这些样条曲线进行处理。
在这项任务中,把点连成线是一项繁重的重复性工作,而用宏可以很快地自动完成。
宏代码如下:
Language="VBscript"
Sub CATMain()
宏初始化
Dim documents1 As Documents
Set documents1 = CATIA.Documents
Dim partDocument1 As Document
Set partDocument1 = documents1.Item("Part1.CATPart")
·
·
·
根据飞机外形要求,设置两个嵌套循环,内部循环完成一条样条曲线的点与点的连接,外部循环完成多条样条曲线的连接。
dim j as integer
for j=1 to const1
样条曲线的定义和设置
Dim hybridShapeSpline1 As HybridShapeSpline
Set hybridShapeSpline1 = hybridShapeFactory1.AddNewSpline() hybridShapeSpline1.SetSplineType 0
hybridShapeSpline1.SetClosing 1
·
·
·
dim i as integer
for i=1 to const2
Dim hybridShapePointCoord1 As HybridShape
Set hybridShapePointCoord1= hybridShapes1.Item(i+const2*(j-1))
·
·
·
hybridShapeSpline1.AddControlPoint hybridShapeControlPoint1
next
hybridBody1.AppendHybridShape hybridShapeSpline1
part1.InWorkObject = hybridShapeSpline1
part1.Update
next
part1.Update
End Sub
同样,按照创建和运行宏的步骤,把以上代码输入到自定义的另一宏的代码区中,保存并运行,结果如图4所示。
图4 宏处理数据
五、结束语
以上介绍了CATIA的宏在航空设计中的一些应用,它也可用于CATIA 与外界交互数据量比较大的其他领域,如汽车领域等。
宏的使用可以加快产品研发周期,提高工作效率。
随着CATIA功能的不断增强以及CATIA应用范围的不断扩大,宏作为一种必不可少的辅助功能,将不断拓展CATIA的功能。