Option Explicit
' COPYRIGHT DASSAULT SYSTEMES 2000
Dim Language as String
Language="VBScript"

' ***********************************************************************
'   Purpose:      Create a Join surface 
'   Assumtions:   .\samples\CAAGsiCreateJoinSurface.CATPart use as input geometry  
'   Author: 
'   Languages:    VBScript
'   Locales:      English 
'   CATIA Level:  V5R6 
' ***********************************************************************

Sub CATMain()


' Openning CATIA Part : CAAGsiCreateJoinSurface.CATPart 
  Dim sDocPath As String
  sDocPath=CATIA.SystemService.Environ("CATDocView")

  Dim oPartDocument As PartDocument
  Set oPartDocument = CATIA.Documents.Open(sDocPath & "\online\CAAScdGsiUseCases\samples\CAAGsiCreateJoinSurface.CATPart")
 
' Retrieving Active OpenBody 
  Dim hybridBodies1 As HybridBodies
  Set hybridBodies1 = oPartDocument.Part.HybridBodies

  Dim OpenBody1 As HybridBody
  Set OpenBody1 = hybridBodies1.Item("Open_body.2")

' Creating a reference for Fill.1 object  
  Dim hybridShapeFill1 As HybridShape
  Set hybridShapeFill1 = OpenBody1.HybridShapes.Item("Fill.1")

  Dim reference1 As Reference
  Set reference1 = oPartDocument.Part.CreateReferenceFromObject(hybridShapeFill1)

' Creating a reference for Extrude.1 object 
  Dim hybridShapeExtrude1 As HybridShape
  Set hybridShapeExtrude1 = OpenBody1.HybridShapes.Item("Extrude.1")

  Dim reference2 As Reference
  Set reference2 = oPartDocument.Part.CreateReferenceFromObject(hybridShapeExtrude1)

' Retrieving Wireframe and Shape Design Factory 
  Dim hybridShapeFactory1 As Factory
  Set hybridShapeFactory1 = oPartDocument.Part.HybridShapeFactory

' Creating a Join (also named assemble)   between Fill.1 and Extrude.1 
  Dim hybridShapeAssemble1 As HybridShapeAssemble
  Set hybridShapeAssemble1 = hybridShapeFactory1.AddNewJoin(reference1, reference2)

' Inserting Join in current OpenBody 
  OpenBody1.AppendHybridShape hybridShapeAssemble1

' Making Join as active object in CATIA Part  
  oPartDocument.Part.InWorkObject = hybridShapeAssemble1

' Updating CATPart 
  oPartDocument.Part.Update 

End Sub