'COPYRIGHT DASSAULT SYSTEMES 2000

'***********************************************************************
'  Purpose:  	Create User Material
'               Retrieve the material from material catalog
'               Apply analysis properties to the material.
'  Assumptions:  The material catalog is not empty
'  Author:       bmw
'  Languages:    CATScript
'  Locales:      English 
'  CATIA Level:  V5R18
'***********************************************************************


Sub CATMain()

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


'Open the CATAnalysis Document
sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, "online\CAAScdAniUseCases\samples\Beam.CATAnalysis")
Set oAnalysisDocument = CATIA.Documents.Open(sFilePath)


'Retrieve the Analysis Managar and Analysis Model
Set oAnalysisManager = oAnalysisDocument.Analysis

'Retrieve the analysis model from list of models
Set oAnalysisModels = oAnalysisManager.AnalysisModels
Set oAnalysisModel = oAnalysisModels.Item(1)
'Retrieve the material set from list of analysis sets
Set oAnalysisSets = oAnalysisModel.AnalysisSets 
Set oAnalysisSet = oAnalysisSets.ItemByType("MaterialSet")


'Add an new user material
Set oAnalysisEntities = oAnalysisSet.AnalysisEntities
Set oAnalysisEntity1 = oAnalysisEntities.Add("SAMUserMaterial")

'Load the catalog of materials
MaterialFile = CATIA.FileSystem.ConcatenatePaths(sDocPath, "online\CAAScdAniUseCases\samples\CatalogForAutomation.CATMaterial")
Set oMaterial_document = CATIA.Documents.Open(MaterialFile)

'Load the catalog of materials
Set cFamilies_list = oMaterial_document.Families

'Retrieve the first family of the library
Dim ifamily_no As Integer
ifamily_no = 1
Set oFirst_family = cFamilies_list.Item(iFamily_no)

'Retrieve the list of materials from the family
Set cMaterials_list = oFirst_family.Materials

Dim imaterial_no As Integer
imaterial_no = 1

Set oMaterial1 = cMaterials_list.Item(imaterial_no)

'Retrieve a material from the list and create analysis material 
imaterial_no = 1
Set oMaterial1 = cMaterials_list.Item(imaterial_no)
Set anlysisMaterial = oMaterial1.CreateAnalysisData("SAMAnisotropicMaterial")

anlysisMaterial.PutValue "SAMShearModulus_11", "1e+10"
anlysisMaterial.PutValue "SAMShearModulus_12", "1e+10"
anlysisMaterial.PutValue "SAMShearModulus_1Z", "1e+10"
anlysisMaterial.PutValue "SAMShearModulus_22", "1e+10"
anlysisMaterial.PutValue "SAMShearModulus_2Z", "1e+10"
anlysisMaterial.PutValue "SAMShearModulus_33", "1e+10"
anlysisMaterial.PutValue "SAMDensity", "7860"
anlysisMaterial.PutValue "SAMThermalExpansion_X", "1-e5"
anlysisMaterial.PutValue "SAMThermalExpansion_Y", "1-e5"
anlysisMaterial.PutValue "SAMThermalExpansion_Z", "1-e5"
anlysisMaterial.PutValue "SAMTensileStressLimit", "1e+11"
anlysisMaterial.PutValue "SAMCompressiveStressLimit", "2e+11"
anlysisMaterial.PutValue "SAMShearStressLimit", "1e+10"

'Apply the material on the User Material
linkMode = 0
Set oManager = oAnalysisManager.GetItem("CATMatManagerVBExt")
oManager.ApplyMaterialOnUserMaterial oAnalysisEntity1, oMaterial1, linkMode 

End Sub