Option Explicit
' COPYRIGTH DASSAULT SYSTEMES 2004
' ***********************************************************************
' Purpose: Apply and retrieve materials onto Product, Part or Body
' Assumptions Looks for Product1.CATProduct, Part1.CATPart and MyCatalog.CATMaterial in the DocView
' Version: 1.0
' Author: AST
' Languages: CATScript
' Locales: English
' CATIA Level: V5R14
' ***********************************************************************
' Main
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
'
' -----------------------------------------------------------
' Open the CATMaterial document (material library)
' -----------------------------------------------------------
Dim sFilePath
sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _
"\online\CAAScdMatUseCases\samples\MyCatalog.CATMaterial")
Dim oMaterial_document As Document
Set oMaterial_document = CATIA.Documents.Open(sFilePath)
Set oMaterial_document = CATIA.ActiveDocument
'
' -----------------------------------------------------------
' Read materials in this catalog (which contains 3 families and 5 materials in each family)
' First retrieve the families of the library
' -----------------------------------------------------------
'
Dim cFamilies_list As MaterialFamilies
Set cFamilies_list = oMaterial_document.Families
Dim iNb_families As Integer
iNb_families = cFamilies_list.Count
Dim sFamiliesName As String
sFamiliesName = cFamilies_list.Name
'
' -----------------------------------------------------------
' Retrieve the first family of the library
' -----------------------------------------------------------
'
Dim oFirst_family As MaterialFamily
Dim ifamily_no As Integer
ifamily_no = 1
Set oFirst_family = cFamilies_list.Item(iFamily_no)
Dim sFamilyName As String
sFamilyName = oFirst_family.Name
'
' -----------------------------------------------------------
' Retrieve the material number 1,2 and 3 of the family
' -----------------------------------------------------------
'
Dim cMaterials_list As Materials
Set cMaterials_list = oFirst_family.Materials
Dim iNb_materials As Integer
iNb_materials = cMaterials_list.Count
Dim imaterial_no As Integer
imaterial_no = 1
Dim oMaterial1 As Material
Set oMaterial1 = cMaterials_list.Item(imaterial_no)
imaterial_no = 2
Dim oMaterial2 As Material
Set oMaterial2 = cMaterials_list.Item(imaterial_no)
imaterial_no = 3
Dim oMaterial3 As Material
Set oMaterial3 = cMaterials_list.Item(imaterial_no)
'
' -----------------------------------------------------------
' Read product file
' -----------------------------------------------------------
'
Dim oProductDocument As Document
sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _
"\online\CAAScdMatUseCases\samples\Product1.CATProduct")
Set oProductDocument = CATIA.Documents.Open(sFilePath)
Set oProductDocument = CATIA.ActiveDocument
'
' -----------------------------------------------------------
' Access on material manager on root product document
' -----------------------------------------------------------
'
Dim oRootProduct As Product
Set oRootProduct = oProductDocument.Product
Dim oManager As MaterialManager
Set oManager = oRootProduct.GetItem("CATMatManagerVBExt")
'
' -----------------------------------------------------------
' Apply the material on the Product (as a link)
' -----------------------------------------------------------
'
Dim linkMode As Integer
linkMode = 1
oManager.ApplyMaterialOnProduct oRootProduct,oMaterial1,linkMode
'
' -----------------------------------------------------------
' Retrieve the material applied on the Product
' -----------------------------------------------------------
'
Dim oAppliedMaterial As Material
oManager.GetMaterialOnProduct oRootProduct,oAppliedMaterial
oProductDocument.Close
'
' -----------------------------------------------------------
' Open the Part document
' -----------------------------------------------------------
'
sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _
"\online\CAAScdMatUseCases\samples\Part1.CATPart")
Dim oPartDocument As Document
Set oPartDocument = CATIA.Documents.Open(sFilePath)
Set oPartDocument = CATIA.ActiveDocument
'
' -----------------------------------------------------------
' Access on material manager on root part document
' -----------------------------------------------------------
'
Dim oRootPart As Part
Set oRootPart = oPartDocument.Part
' Retrieve the extension object associated to Y under the key "MyCATIVBExtensionImpl"
Set oManager = oRootPart.GetItem("CATMatManagerVBExt")
'
' -----------------------------------------------------------
' Apply the material on the Part
' -----------------------------------------------------------
'
linkMode = 0
oManager.ApplyMaterialOnPart oRootPart,oMaterial2,linkMode
'
' -----------------------------------------------------------
' Retrieve the material on the Part
' -----------------------------------------------------------
'
oManager.GetMaterialOnPart oRootPart,oAppliedMaterial
'
' -----------------------------------------------------------
' Retrieve the Part Body
' -----------------------------------------------------------
'
Dim oMainBody As Body
Set oMainBody = oRootPart.MainBody
'
' -----------------------------------------------------------
' Apply the material on the Part Body (as a link)
' -----------------------------------------------------------
'
linkMode = 1
oManager.ApplyMaterialOnBody oMainBody,oMaterial3,linkMode
'
' -----------------------------------------------------------
' Retrieve the material on the Part Body
' -----------------------------------------------------------
'
oManager.GetMaterialOnBody oMainBody,oAppliedMaterial
'
' -----------------------------------------------------------
' End of Script
' -----------------------------------------------------------
'
' Close the documents
'
oMaterial_document.Close
oPartDocument.Close
Set oRootPart = Nothing
Set oMainBody = Nothing
Set oMaterial1 = Nothing
Set oMaterial2 = Nothing
Set oMaterial3 = Nothing
Set oRootProduct = Nothing
Set oProductDocument = Nothing
Set oMaterial_document = Nothing
Set oManager = Nothing
End Sub