天天看點

CATIA二次開發VBA:(一)宏的錄制、修改及回放一、錄制宏二、宏的修改三、宏的回放

目錄

一、錄制宏

二、宏的修改

三、宏的回放

一、錄制宏

1、打開CATIA關閉所有文檔;

2、從菜單中選擇“Tools——Macro——Star Recording”指令,以開始錄制宏;

CATIA二次開發VBA:(一)宏的錄制、修改及回放一、錄制宏二、宏的修改三、宏的回放

3、從菜單中選擇“Tools——Macro——Stop Recording”指令,以停止錄制宏。

CATIA二次開發VBA:(一)宏的錄制、修改及回放一、錄制宏二、宏的修改三、宏的回放

二、宏的修改

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”;

CATIA二次開發VBA:(一)宏的錄制、修改及回放一、錄制宏二、宏的修改三、宏的回放

  (2)  從工具欄右擊“customize——Commands——Macros——建立的宏”,按住滑鼠左鍵拖拽到上一步中的建立工具欄中即可。

CATIA二次開發VBA:(一)宏的錄制、修改及回放一、錄制宏二、宏的修改三、宏的回放

本章完~

繼續閱讀