CATIA二次开发VBA:(一)宏的录制、修改及回放

目录

一、录制宏

二、宏的修改

三、宏的回放


一、录制宏

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——新建的宏”,按住鼠标左键拖拽到上一步中的新建工具栏中即可。

 

本章完~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值