Structure Design

Creating Structure Objects


This macro shows you how to create structure objects.

It retrieves a Product document , creates some members, plates and end plates.

 

CAAStrCreationOfStructureObjects is launched in CATIA [1]. Some documents are needed.

  • CAAStrCreationOfStructureObjects.CATScript is located in the CAAScdStrUseCases module. Execute macro (windows only).
  • The document Product1.CATProduct is located in the CAAScdStrUseCases module in the samples directory. Grid.CATPart is linked to the previous document and it contains the grid used by the macro.
  • The CATPart containing the section is located in the samples directory.

 

CAAStrCreationOfStructureObjects includes five steps:

  1. Prolog
  2. Creating ends of members
  3. Creating members
  4. Creating a plate on top of the previous members
  5. Creating end plates on members

 

Prolog

  ...
    Dim doc As Document

    Dim StrWorkbench As StrWorkbench
    Dim strFactory As StrObjectFactory

    Set doc = CATIA.ActiveDocument
    Dim rootProduct As Product
    Set rootProduct = doc.Product

    Set StrWorkbench = doc.GetWorkbench("StrWorkbench")
    Set strFactory = rootProduct.GetTechnologicalObject("StructureObjectFactory")

    Dim documents As Documents
    Set documents = CATIA.Documents
  ...

This step describes how to get the structure object factory.

Creating ends of members

  ...
  ' column 1
    Dim reference11 As Reference
    Set reference11 = rootProduct.CreateReferenceFromName("Produit1/grid/!Selection_BorderFVertex:(BEdge:(Brp:(GSMIntersect.12;(Brp:(GSMPlane.3);Brp:(GSMIntersect.10;(Brp:(GSMPlane.1);Brp:(GSMPlane.2)))));None:(Limits1:();Limits2:()));GSMIntersect.12)")
    Dim extremity11 As AnyObject
    Set extremity11 = strFactory.AddDefExtFromReference(reference11, 0)

    Dim reference12 As Reference
    Set reference12 = rootProduct.CreateReferenceFromName("Produit1/grid/!Selection_BorderFVertex:(BEdge:(Brp:(GSMIntersect.11;(Brp:(xy-plane);Brp:(GSMIntersect.10;(Brp:(GSMPlane.1);Brp:(GSMPlane.2)))));None:(Limits1:();Limits2:()));GSMIntersect.11)")
    Dim extremity12 As AnyObject
    Set extremity12 = strFactory.AddDefExtFromReference(reference12, 0)

    ' column 2
    Dim reference21 As Reference
    Set reference21 = rootProduct.CreateReferenceFromName("Produit1/grid/!Selection_BorderFVertex:(BEdge:(Brp:(GSMIntersect.9;(Brp:(GSMPlane.3);Brp:(GSMIntersect.7;(Brp:(GSMPlane.1);Brp:(zx-plane)))));None:(Limits1:();Limits2:()));GSMIntersect.9)")
    Dim extremity21 As AnyObject
    Set extremity21 = strFactory.AddDefExtFromReference(reference21, 0)

    Dim reference22 As Reference
    Set reference22 = rootProduct.CreateReferenceFromName("Produit1/grid/!Selection_BorderFVertex:(BEdge:(Brp:(GSMIntersect.8;(Brp:(xy-plane);Brp:(GSMIntersect.7;(Brp:(GSMPlane.1);Brp:(zx-plane)))));None:(Limits1:();Limits2:()));GSMIntersect.8)")
    Dim extremity22 As AnyObject
    Set extremity22 = strFactory.AddDefExtFromReference(reference22, 0)

    ' column 3
    Dim reference31 As Reference
    Set reference31 = rootProduct.CreateReferenceFromName("Produit1/grid/!Selection_BorderFVertex:(BEdge:(Brp:(GSMIntersect.5;(Brp:(xy-plane);Brp:(GSMIntersect.4;(Brp:(yz-plane);Brp:(GSMPlane.2)))));None:(Limits1:();Limits2:()));GSMIntersect.5)")
    Dim extremity31 As AnyObject
    Set extremity31 = strFactory.AddDefExtFromReference(reference31, 0)

    Dim reference32 As Reference
    Set reference32 = rootProduct.CreateReferenceFromName("Produit1/grid/!Selection_BorderFVertex:(BEdge:(Brp:(GSMIntersect.6;(Brp:(GSMPlane.3);Brp:(GSMIntersect.4;(Brp:(yz-plane);Brp:(GSMPlane.2)))));None:(Limits1:();Limits2:()));GSMIntersect.6)")
    Dim extremity32 As AnyObject
    Set extremity32 = strFactory.AddDefExtFromReference(reference32, 0)

    ' column 4
    Dim reference41 As Reference
    Set reference41 = rootProduct.CreateReferenceFromName("Produit1/grid/!Selection_BorderFVertex:(BEdge:(Brp:(GSMIntersect.3;(Brp:(GSMPlane.3);Brp:(GSMIntersect.1;(Brp:(yz-plane);Brp:(zx-plane)))));None:(Limits1:();Limits2:()));GSMIntersect.3)")
    Dim extremity41 As AnyObject
    Set extremity41 = strFactory.AddDefExtFromReference(reference41, 0)

    Dim reference42 As Reference
    Set reference42 = rootProduct.CreateReferenceFromName("Produit1/grid/!Selection_BorderFVertex:(BEdge:(Brp:(GSMIntersect.2;(Brp:(xy-plane);Brp:(GSMIntersect.1;(Brp:(yz-plane);Brp:(zx-plane)))));None:(Limits1:();Limits2:()));GSMIntersect.2)")
    Dim extremity42 As AnyObject
    Set extremity42 = strFactory.AddDefExtFromReference(reference42, 0)
  ...

We have to define all the ends we need to define the members. All  these ends are on grid geometry.

Creating members

...
    dim sectionName as string
    sectionName = InputBox("Section path","Parameters", "...\HEA100.CATPart")
    
    ' column 1    
    Dim docSection1 As Document
    Set docSection1 = documents.Read(sectionName)

    Dim section1 As StrSection
    Set section1 = strFactory.AddSection(docSection1)

    dim member1 as StrMember
    Set member1 = strFactory.AddMember(section1, "catStrCenterCenter", 0, extremity11, extremity12, "Column")
        
    ' column 2
    Dim docSection2 As Document
    Set docSection2 = documents.Read(sectionName)

    Dim section2 As StrSection
    Set section2 = strFactory.AddSection(docSection2)

    dim member2 as StrMember
    Set member2 = strFactory.AddMember(section2, "catStrCenterCenter", 0, extremity21, extremity22, "Column")
        
    ' column 3
    Dim docSection3 As Document
    Set docSection3 = documents.Read(sectionName)

    Dim section3 As StrSection
    Set section3 = strFactory.AddSection(docSection3)

    dim member3 as StrMember
    Set member3 = strFactory.AddMember(section3, "catStrCenterCenter", 0, extremity31, extremity32, "Column")
        
    ' column 4
    Dim docSection4 As Document
    Set docSection4 = documents.Read(sectionName)

    Dim section4 As StrSection
    Set section4 = strFactory.AddSection(docSection4)

    dim member4 as StrMember
    Set member4 = strFactory.AddMember(section4, "catStrCenterCenter", 0, extremity41, extremity42, "Column")
  ...

Members are created using the section document and ends defined in the previous step. The variable sectionName has to be valuated with the section path.

Creating end-plates

...
    Dim plate1 As StrPlate
    Set plate1 = strFactory.AddRectangularEndPlate(member1, catEndExtremity, 0.005, 0.2, 0.2, catStrStandardOrientation, "EndPlate")
	
    Dim plate2 As StrPlate
    Set plate2 = strFactory.AddRectangularEndPlate(member2, catEndExtremity, 0.005, 0.2, 0.2, catStrStandardOrientation, "EndPlate")
	
    Dim plate3 As StrPlate
    Set plate3 = strFactory.AddRectangularEndPlate(member3, catStartExtremity, 0.005, 0.2, 0.2, catStrStandardOrientation, "EndPlate")
	
    Dim plate4 As StrPlate
    Set plate4 = strFactory.AddRectangularEndPlate(member4, catEndExtremity, 0.005, 0.2, 0.2, catStrStandardOrientation, "EndPlate")
...

End plates are created at  the base of each member.

Creating a plate

...
    Dim contour(3) As Reference

    Set contour(0) = rootProduct.CreateReferenceFromName("Produit1/Column_2/!Selection_FVertex:(Vertex:(Neighbours:(Face:(Brp:(StructuralRib.1;0:(Brp:(Sketch.1;1)));None:());Face:(Brp:(StructuralRib.1;1);None:());Face:(Brp:(StructuralRib.1;0:(Brp:(Sketch.1;20)));None:())));StructuralRib.1)")
    Set contour(1) = rootProduct.CreateReferenceFromName("Produit1/Column_4/!Selection_FVertex:(Vertex:(Neighbours:(Face:(Brp:(StructuralRib.1;0:(Brp:(Sketch.1;1)));None:());Face:(Brp:(StructuralRib.1;2);None:());Face:(Brp:(StructuralRib.1;0:(Brp:(Sketch.1;20)));None:())));StructuralRib.1)")
    Set contour(2) = rootProduct.CreateReferenceFromName("Produit1/Column_5/!Selection_FVertex:(Vertex:(Neighbours:(Face:(Brp:(StructuralRib.1;0:(Brp:(Sketch.1;10)));None:());Face:(Brp:(StructuralRib.1;1);None:());Face:(Brp:(StructuralRib.1;0:(Brp:(Sketch.1;11)));None:())));StructuralRib.1)")
    Set contour(3) = rootProduct.CreateReferenceFromName("Produit1/Column_3/!Selection_FVertex:(Vertex:(Neighbours:(Face:(Brp:(StructuralRib.1;0:(Brp:(Sketch.1;11)));None:());Face:(Brp:(StructuralRib.1;1);None:());Face:(Brp:(StructuralRib.1;0:(Brp:(Sketch.1;12)));None:())));StructuralRib.1)")

    Dim support As Reference
    Set support = rootProduct.CreateReferenceFromName("Produit1/grid/!Plane.3")

    Dim plate As StrPlate
    Set plate = strFactory.AddPlate(support, 0.005, catStrStandardOrientation, contour, 0.0, "PlateType")
...

We have created a plate on top of the four members. The contour is defined by the selection of  vertices on these members.

 

[Top]


In Short

This use case has shown how to create structure objects

[Top]


References

[1] Replaying a macro
[Top]

Copyright © 2001, Dassault Systèmes. All rights reserved.