Source code for pyleecan.Functions.Machine.get_material

from ...Classes.Material import Material
from ...Functions.Material.compare_material import compare_material


[docs]def get_material(obj): """ Get the list of unique materials contained in a pyleecan object Parameters ---------- obj : Pyleecan object Returns ------- materials : list of unique materials contained in the object """ materials = [] for key, value in obj.as_dict().items(): # Get an object attribute sub_obj = getattr(obj, key) # Add it if it's a Material if isinstance(sub_obj, Material): materials.append(sub_obj) # Check the sub object if it's a Pyleecan object elif isinstance(value, dict) and "__class__" in value: materials.extend(get_material(sub_obj)) # Return a unique list for material in materials[:]: n_mat = 0 for mat in materials: if compare_material(mat, material): n_mat += 1 if n_mat > 1: # material found twice in the list materials.remove(material) break return materials