/
example__material__001.py
120 lines (93 loc) · 4.26 KB
/
example__material__001.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#! /usr/bin/python3.9
"""
Example - Material - 001
Description:
Opens the material catalog and retrieves the first few materials.
Creates a new part and applies the material to the part, the main
body and a hybrid body.
Creates a new product and applies the material to it.
Requirements:
- CATIA running.
"""
##########################################################
# insert syspath to project folder so examples can be run.
# for development purposes.
import os
import sys
sys.path.insert(0, os.path.abspath("..\\pycatia"))
##########################################################
from pycatia import catia
from pycatia.cat_mat_interfaces.material_document import MaterialDocument
from pycatia.cat_mat_interfaces.material_manager import MaterialManager
from pycatia.mec_mod_interfaces.part import Part
from pycatia.product_structure_interfaces.product import Product
caa = catia()
##########################################################
# MATERIAL MANAGER ON MATERIAL CATALOGS
##########################################################
material_documents = caa.documents.open(r"tests/cat_files/Catalog.CATMaterial")
material_document = MaterialDocument(caa.active_document.com_object)
material_families = material_document.families
materials = material_families.item(1).materials
material_families_list = []
material_list = []
for i in range(1, material_families.count):
family = material_families.item(i)
material_families_list.append(family)
for i in range(1, materials.count):
material = materials.item(i)
material_list.append(material)
print(f"Found {material_families.count} material families: " f"{', '.join([n.name for n in material_families_list])}.")
print(f"Found {materials.count} materials in the first family: " f"{', '.join([n.name for n in material_list])}.")
##########################################################
# MATERIAL MANAGER ON PARTS
##########################################################
caa.documents.add("Part")
part_document = caa.active_document
part = Part(part_document.part.com_object) # type: ignore
main_body = part.main_body
hybrid_bodies = part.hybrid_bodies
hybrid_body = hybrid_bodies.add()
material_item = part.get_item("CATMatManagerVBExt")
material_manager = MaterialManager(material_item.com_object)
print("Removing all materials ...")
material_manager.apply_material_on_body(i_body=main_body, i_material=None)
material_manager.apply_material_on_part(i_part=part, i_material=None)
material_manager.apply_material_on_hybrid_body(i_hybrid_body=hybrid_body, i_material=None)
print("Adding materials with link ...")
material_manager.apply_material_on_part(i_part=part, i_material=material_list[0], i_link_mode=True)
material_manager.apply_material_on_body(i_body=main_body, i_material=material_list[1], i_link_mode=True)
material_manager.apply_material_on_hybrid_body(i_hybrid_body=hybrid_body, i_material=material_list[2], i_link_mode=True)
material_1 = material_manager.get_material_on_part(i_part=part)
print(
"Material applied to Part:",
"None" if material_1 is None else material_1.name,
)
material_2 = material_manager.get_material_on_body(i_body=main_body)
print(
"Material applied to Main Body:",
"None" if material_2 is None else material_2.name,
)
material_3 = material_manager.get_material_on_hybrid_body(i_hybrid_body=hybrid_body)
print(
"Material applied to Hybrid Body:",
"None" if material_3 is None else material_3.name,
)
##########################################################
# MATERIAL MANAGER ON PRODUCTS
##########################################################
caa.documents.add("Product")
product_document = caa.active_document
product = product_document.product # type: ignore
product = Product(product.com_object)
material_item = product.get_item("CATMatManagerVBExt")
material_manager = MaterialManager(material_item.com_object)
print("Removing material ...")
material_manager.apply_material_on_product(i_product=product, i_material=None)
print("Adding material with link ...")
material_manager.apply_material_on_product(i_product=product, i_material=material_list[3], i_link_mode=True)
material_4 = material_manager.get_material_on_product(i_product=product)
print(
"Material applied to Product:",
"None" if material_4 is None else material_4.name,
)