目录
一、录制宏
二、宏的修改
三、宏的回放
一、录制宏
1、打开CATIA关闭所有文档;
2、从菜单中选择“Tools——Macro——Star Recording”命令,以开始录制宏;

3、从菜单中选择“Tools——Macro——Stop Recording”命令,以停止录制宏。
二、宏的修改
1、本文以建立一个圆柱体为示例;
2、从菜单中选择“Tools——Macro——Macros”命令,找到录制的宏,点击edit查看代码;
Sub CATMain()
Dim documents1 As Documents
Set documents1 = CATIA.Documents
Dim partDocument1 As PartDocument
Set partDocument1 = documents1.Add("Part")
'以上代码是新建一个part
Dim part1 As Part
Set part1 = partDocument1.Part
Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies
Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("Geometrical Set.1")
'以上代码定义工作对象为"Geometrical Set.1"
Dim sketches1 As Sketches
Set sketches1 = hybridBody1.HybridSketches
Dim originElements1 As OriginElements
Set originElements1 = part1.OriginElements
Dim reference1 As Reference
Set reference1 = originElements1.PlaneXY
Dim sketch1 As Sketch
Set sketch1 = sketches1.Add(reference1)
'以上在XY平面上建立草图
Dim arrayOfVariantOfDouble1(8)
arrayOfVariantOfDouble1(0) = 0#
arrayOfVariantOfDouble1(1) = 0#
arrayOfVariantOfDouble1(2) = 0#
arrayOfVariantOfDouble1(3) = 1#
arrayOfVariantOfDouble1(4) = 0#
arrayOfVariantOfDouble1(5) = 0#
arrayOfVariantOfDouble1(6) = 0#
arrayOfVariantOfDouble1(7) = 1#
arrayOfVariantOfDouble1(8) = 0#
Set sketch1Variant = sketch1
sketch1Variant.SetAbsoluteAxisData arrayOfVariantOfDouble1
'以上定义草图的作图方向
part1.InWorkObject = sketch1
Dim factory2D1 As Factory2D
Set factory2D1 = sketch1.OpenEdition()
'打开草图绘制
Dim geometricElements1 As GeometricElements
Set geometricElements1 = sketch1.GeometricElements
Dim axis2D1 As Axis2D
Set axis2D1 = geometricElements1.Item("AbsoluteAxis")
Dim line2D1 As Line2D
Set line2D1 = axis2D1.GetItem("HDirection")
line2D1.ReportName = 1
Dim line2D2 As Line2D
Set line2D2 = axis2D1.GetItem("VDirection")
line2D2.ReportName = 2
Dim circle2D1 As Circle2D
Set circle2D1 = factory2D1.CreateClosedCircle(0#, 0#, 40#)
Dim point2D1 As Point2D
Set point2D1 = axis2D1.GetItem("Origin")
circle2D1.CenterPoint = point2D1
circle2D1.ReportName = 3
Dim constraints1 As Constraints
Set constraints1 = sketch1.Constraints
Dim reference2 As Reference
Set reference2 = part1.CreateReferenceFromObject(circle2D1)
Dim constraint1 As Constraint
Set constraint1 = constraints1.AddMonoEltCst(catCstTypeRadius, reference2)
constraint1.Mode = catCstModeDrivingDimension
Dim length1 As Length
Set length1 = constraint1.Dimension
length1.Value = 40#
sketch1.CloseEdition
part1.InWorkObject = hybridBody1
part1.UpdateObject sketch1
'以上完成草图绘制,画一个半径为40的圆,圆心为草图坐标原点
Dim bodies1 As Bodies
Set bodies1 = part1.Bodies
Dim body1 As Body
Set body1 = bodies1.Item("PartBody")
part1.InWorkObject = body1
part1.InWorkObject = body1
Dim shapeFactory1 As ShapeFactory
Set shapeFactory1 = part1.ShapeFactory
Dim pad1 As Pad
Set pad1 = shapeFactory1.AddNewPad(sketch1, 20#)
Dim limit1 As Limit
Set limit1 = pad1.FirstLimit
Dim length2 As Length
Set length2 = limit1.Dimension
length2.Value = 160#
'完成草图拉伸
part1.Update
End Sub
3、修改代码,一下代码与上面代码效果相同
Sub CATMain()
Set MyDocument = CATIA.Documents.Add("Part") '新建一个part
Set Mypart = MyDocument.Part
Set MyGeo = MyDocument.Part.HybridBodies.Item("Geometrical Set.1") '工作对象设置为"Geometrical Set.1"
Set Myref1 = MyDocument.Part.OriginElements.PlaneXY '选择坐标原点的XY平面
Set Mysketch1 = MyGeo.HybridSketches.Add(Myref1) '在XY平面上建立草图
Dim arrayOfVariantOfDouble1(8)
arrayOfVariantOfDouble1(0) = 0#
arrayOfVariantOfDouble1(1) = 0#
arrayOfVariantOfDouble1(2) = 0#
arrayOfVariantOfDouble1(3) = 1#
arrayOfVariantOfDouble1(4) = 0#
arrayOfVariantOfDouble1(5) = 0#
arrayOfVariantOfDouble1(6) = 0#
arrayOfVariantOfDouble1(7) = 1#
arrayOfVariantOfDouble1(8) = 0#
'定义草图方向数组
Mysketch1.SetAbsoluteAxisData arrayOfVariantOfDouble1
Mypart.InWorkObject = Mysketch1
'定义草图作图方向
Set factory2D1 = Mysketch1.OpenEdition() '打开草图编辑平面
Set axis2D1 = Mysketch1.GeometricElements.Item("AbsoluteAxis")
Set line2D1 = axis2D1.GetItem("HDirection")
line2D1.ReportName = 1
Set line2D2 = axis2D1.GetItem("VDirection")
line2D2.ReportName = 2
Set circle2D1 = factory2D1.CreateClosedCircle(0#, 0#, 40#) '画半径为40mm的圆
circle2D1.CenterPoint = axis2D1.GetItem("Origin") '定义圆心为坐标原点
circle2D1.ReportName = 3
Set reference2 = Mypart.CreateReferenceFromObject(circle2D1)
Set constraint1 = Mysketch1.Constraints.AddMonoEltCst(catCstTypeRadius, reference2) '创建圆的半径约束
constraint1.Mode = catCstModeDrivingDimension
Set length1 = constraint1.Dimension
length1.Value = 40#
Mysketch1.CloseEdition '退出草图编辑
Mypart.InWorkObject = MyDocument.Part.HybridBodies
Mypart.UpdateObject Mysketch1
Mypart.InWorkObject = Mypart.Bodies.Item("PartBody") '把"PartBody"定义为工作对象
Set pad1 = Mypart.ShapeFactory.AddNewPad(Mysketch1, 20#) '拉伸草图
Set length2 = pad1.FirstLimit.Dimension '定义拉伸方向
length2.Value = 160# '定义拉伸长度
Mypart.Update
End Sub
三、宏的回放
1、从菜单中选择“Tools——Macro——Macros”命令,找到录制的宏,点击run就可以运行了
2、将宏添加到工具栏
(1)从工具栏右击“customize——Toolbars——New”;
(2) 从工具栏右击“customize——Commands——Macros——新建的宏”,按住鼠标左键拖拽到上一步中的新建工具栏中即可。
本章完~