目錄
一、錄制宏
二、宏的修改
三、宏的回放
一、錄制宏
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——建立的宏”,按住滑鼠左鍵拖拽到上一步中的建立工具欄中即可。
本章完~