Structure Functional Design

Editing Members


This macro shows you how to modify members. This macro modifies the existing members created using the CAASfdCreateMember macro.

CAASfdEditMember is launched in CATIA [1]. First open CAASfdEditMember.CATPart in the samples directory.

CAASfdEditMember.CATScript is located in the CAAScdSfdUseCases. Execute macro (Windows only).

CAASfdEditMember includes eight steps:

  1. Prolog
  2. Retrieving the Factory from the Part Document
  3. Getting the Manager from the Factory
  4. Retrieving the Members
  5. Modifying an SfmMemberCurve Object
  6. Modifying an SfmMemberPlane2Curves Object
  7. Modifying an SfmMemberSurfSurf Object
  8. Updating the Part Document

Prolog

Opens the CAASddEditMember.CATPart in CATIA.

Sub CATMain()
  Dim ObjPart  As Part
  Set ObjPart = CATIA.ActiveDocument.Part
  ...

Retrieving the Factory from the Part Document

This step describes how to get Structure Functional Modeler factory object.

  ...
  'Get the Factory Object
  Dim FactoryObj As SfmFactory
  Set FactoryObj = ObjPart.GetCustomerFactory("SfmFactory")
  ...

Getting the Manager from the Factory

This step describes how to get the SfmManager object.

  ...
  'Get the Manager Object
  Dim ManagerObj  As  SfmManager
  Set ManagerObj = FactoryObj.GetManager
  ...

Retrieving the Members

This step describes how to get the collection of members and how to get one specific element in it.

  ...
  Dim SuperMembers As References
  Set SuperMembers = ManagerObj.GetSuperMembers
  Dim SuperMember1, SuperMember2, SuperMember3, SuperMember4, SuperMember5 As SfmMember
  Set SuperMember1 = SuperMembers.Item (1)
  Set SuperMember2 = SuperMembers.Item (2)
  Set SuperMember3 = SuperMembers.Item (4)
  Set SuperMember4 = SuperMembers.Item (5)
  Set SuperMember5 = SuperMembers.Item (6)
  ...

We have to check the types of the member and then retrieve them As objects of their types.

  ...
  'TO KNOW THE MEMBER TYPE
  Dim MemberTypeName1 As String
  Dim MemberTypeName2 As String
  Dim MemberTypeName3 As String
  Dim MemberTypeName4 As String
  Dim MemberTypeName5 As String
  MemberTypeName1 = SuperMember1.GetMemberType
  MemberTypeName2 = SuperMember2.GetMemberType
  MemberTypeName3 = SuperMember3.GetMemberType
  MemberTypeName4 = SuperMember4.GetMemberType
  MemberTypeName5 = SuperMember5.GetMemberType
  ...

Modifying an SfmMemberCurve Object

  ...
  If (TypeName (SuperMember1) = "SfmMemberCurve") Then
    'MODIFYING SuperMember1
    'Modifying AnchorPoint
    Dim AnchorPoint1 As String
    AnchorPoint1 = SuperMember1.AnchorPoint
    SuperMember1.AnchorPoint = "catStrTopLeft"
    'To Know Category And Curve
    Dim Member1Category As String
    Member1Category = SuperMember1.Category
    Dim Member1CurveRef As Reference
    Set Member1CurveRef = SuperMember1.Curve
    'Setting The Reference Surface
    Dim Member1Surface As AnyObject
    Set Member1Surface = ObjPart.FindObjectByName("Shell_058 Molded surface")
    Dim Member1RefSurface As Reference
    Set Member1RefSurface = ObjPart.CreateReferenceFromObject(Member1Surface)
    SuperMember1.ReferenceSurface = Member1RefSurface
    'Getting The ReferenceSurface Orientation
    Dim ReferenceSurfaceOrient As Long
    ReferenceSurfaceOrient = SuperMember1.ReferenceSurfaceOrientation
    'Inverting the reference surface orientation
    SuperMember1.InvertReferenceSurface
    'Getting the FlipStatus and Flipping
    Dim FlipStatus As Boolean
    FlipStatus = SuperMember1.IsFlip
    SuperMember1.Flip
    'Setting Grade,Horizontal and Vertical Offset
    SuperMember1.Grade = "A45"
    SuperMember1.HorizontalAnchorPointOffSet = "10"
    SuperMember1.VerticalAnchorPointOffSet = "15"
    'Checking the Horizontal Offset
    Dim Member1HAPOffSet As Double
    Member1HAPOffSet = SuperMember1.HorizontalAnchorPointOffset
    'Checking and Modifying SectionName Of Member
    Dim Member1SectionName As String
    Member1SectionName = SuperMember1.SectionName
    SuperMember1.SectionName = "WT15x54"
  End If
  ...

Modifying an SfmMemberPlane2Curves Object

  ...
  If (TypeName(SuperMember3) = "SfmMemberPlane2Curves") Then
    'MODIFYING SuperMember3

    'Checking First and Second Member
    Dim InputMemRef1, InputMemRef2 As Reference
    Set InputMemRef1 = SuperMember3.FirstMember
    Set InputMemRef2 = SuperMember3.SecondMember
 
    'Modifying FirstMember
    Dim NewInputMemRef As Reference
    Set NewInputMemRef = ObjPart.CreateReferenceFromObject(SuperMember5)
    SuperMember3.FirstMember = NewInputMemRef

    'Getting the Reference Plane
    Dim InputPlaneRef As Reference
    Set InputPlaneRef = SuperMember3.Plane
  End If
  ...

Modifying an SfmMemberSurfSurf Object

  ...
  If (TypeName(SuperMember5) = "SfmMemberSurfSurf") Then
    'MODIFYING SuperMember5
    'Checking and Modifying FirstSurface

    Dim FirstSurfaceRef As Reference
    Set FirstSurfaceRef = SuperMember5.FirstSurface
  
    Dim NewFirstSurface As AnyObject
    Set NewFirstSurface = ObjPart.FindObjectByName("CROSS.65")

    Dim NewFirstSurfaceRef As Reference
    Set NewFirstSurfaceRef = ObjPart.CreateReferenceFromObject(NewFirstSurface)

    SuperMember5.FirstSurface = NewFirstSurfaceRef

    'Checking And Modifying FirstSurfaceOffSet and Orientation

    Dim FirstSurfaceOrient As Long
    FirstSurfaceOrient = SuperMember5.FirstSurfaceOrientation
    SuperMember5.FirstSurfaceOrientation = 2
  
    SuperMember5.FirstSurfaceOffSet = "20"

    Dim Surface1OffSet As Double
    Surface1OffSet = SuperMember5.FirstSurfaceOffset

  End If
  ...

Updating the Part Document

Update the Part.

 ...
  'Updating The Part with All Modifications
  ObjPart.Update
End Sub

[Top]


In Short

This use case has shown how to edit member objects.


References

[1] Replaying a Macro
[2] Opening an Existing CATIA Document
[Top]

Copyright © 1999-2011, Dassault Systèmes. All rights reserved.