Option Explicit
' COPYRIGTH DASSAULT SYSTEMES 2000

' ***********************************************************************
'   Purpose:      Read an Analysis document already linked to a CATPart Document
'                 Define boundaries and loading condition on the Part and launch the
'                 Computation
'   Assumptions:   Looks for AnalysisCrank.CATAnalysis linked to Crankshaft.CATPart
'                 stored in the DocView   
'   Author: 
'   Languages:    VBScript
'   Locales:      English 
'   CATIA Level:  V5R6 
' ***********************************************************************


Sub CATMain()


    ' ----------------------------------------------------------- 
    ' Optional: allows to find the sample wherever it's installed
    dim sDocPath As String 
    sDocPath=CATIA.SystemService.Environ("CATDocView")
    If (Not CATIA.FileSystem.FolderExists(sDocPath)) Then
      Err.Raise 9999,,"No Doc Path Defined"
    End If
    ' ----------------------------------------------------------- 

    ' Get the collection of documents in session
    Dim documents1 As Documents
    Set documents1 = CATIA.Documents

    ' Open the CATAnalysis Document
    Dim oAnalysisDocument As Document
    Set oAnalysisDocument = documents1.Open(sDocPath & "\online\CAAScdAniUseCases\samples\AnalysisCrank.CATAnalysis")
    '_____________________________________________________________________________________

    ' Retrieve the CATPart document in order to compute the references for preprocessing
    Dim PartDocument As PartDocument
    Set PartDocument = documents1.Item(2)

    ' Retrieve the Part from this document
    Dim part1 As Part
    Set part1 = PartDocument.Part

    ' Extract the product as input of preprocessing feature.
    Dim product1 As Product
    Set product1 = PartDocument.Product

    ' Retrieve the References
    Dim referenceBound As Reference
    Set referenceBound = part1.CreateReferenceFromName("Selection_RSur:(Face:(Brp:(GSMRotate.2;(Brp:(GSMTranslate.2;(Brp:(Shaft.2;0:(Brp:(Sketch.5;7)))))));None:());GSMRotate.2)")
    Dim referenceLoad As Reference
    Set referenceLoad = part1.CreateReferenceFromName("Selection_RSur:(Face:(Brp:(GSMRotate.2;(Brp:(GSMTranslate.2;(Brp:(Shaft.1;0:(Brp:(Sketch.4;4)))))));None:());GSMRotate.2)")

    '_____________________________________________________________________________________
    ' Start to scan the existing structure of analysis document:  Retrieve the AnalysisManager
    Dim AnaManager As AnalysisManager
    Set AnaManager = oAnalysisDocument.Analysis

    ' Retrieve the AnalysisModels
    Dim AnaModels As AnalysisModels
    Set AnaModels = AnaManager.AnalysisModels

    ' To work with the first AnalysisModel of the collection
    Dim AnaModel As AnalysisModel
    Set AnaModel = AnaModels.Item(1)

    ' Retrieve the AnalysisCases
    Dim  Cases As  AnalysisCases
    Set  Cases=AnaModel.AnalysisCases

    ' To work with the first AnalysisCase of the collection
    Dim MyCase As AnalysisCase
    Set  MyCase=Cases.Item(1)

    ' Retrieve the AnalysisSets
    Dim ListSets As AnalysisSets
    Set ListSets = MyCase.AnalysisSets

    '_____________________________________________________________________________________
    ' To work with the AnalysisSet of the collection that is typed for Boundary condition
    Dim MySet As AnalysisSet
    Set MySet = ListSets.ItemByType("RestraintSet")

    ' Retrieve the AnalysisEntities collection defined on the set
    Dim anEntities As AnalysisEntities
    Set anEntities = MySet.AnalysisEntities

    ' Define an Analysis Entity on the set in order to Fix the referencebound of the Part
    Dim analysisEntity As AnalysisEntity
    Set analysisEntity = anEntities.Add("SAMClamp")
    analysisEntity.AddSupportFromProduct product1, referenceBound

    '_____________________________________________________________________________________
    ' To work with the AnalysisSet of the collection that is typed for Load condition
    Set MySet = ListSets.ItemByType("LoadSet")

    ' Retrieve the AnalysisEntities collection defined on the set
    Set anEntities = MySet.AnalysisEntities

    ' Define an Analysis Entity on the set in order to assign a pressure the referenceLoad of the Part
    Set analysisEntity = anEntities.Add("SAMMoment")
 
   ' Valuate the momentum value and assign it to the reference
    analysisEntity.SetValue "SAMMomentVector","", 1, 1, 1, 100000.
    analysisEntity.SetValue "SAMMomentVector","", 2, 1, 1, 0.
    analysisEntity.SetValue "SAMMomentVector","", 3, 1, 1, 0.

    analysisEntity.AddSupportFromProduct product1, referenceLoad

    '_____________________________________________________________________________________
    ' Launch the computation of the Case
    MyCase.Compute

End Sub