Source code for moldflow.material_finder

# SPDX-FileCopyrightText: 2025 Autodesk, Inc.
# SPDX-License-Identifier: Apache-2.0

"""
Usage:
    MaterialFinder Class API Wrapper
"""

from .prop import Property
from .common import MaterialDatabase, MaterialDatabaseType
from .logger import process_log
from .helper import check_type, get_enum_value, coerce_optional_dispatch
from .com_proxy import safe_com
from .common import LogMessage


[docs] class MaterialFinder: """ Wrapper for MaterialFinder class of Moldflow Synergy. """ def __init__(self, _material_finder): """ Initialize the MaterialFinder with a MaterialFinder instance from COM. Args: _material_finder: The MaterialFinder instance from COM. """ process_log(__name__, LogMessage.CLASS_INIT, locals(), name="MaterialFinder") self.material_finder = safe_com(_material_finder)
[docs] def set_data_domain( self, material_database: MaterialDatabase | int, material_database_type: MaterialDatabaseType | str, ) -> None: """ Set the material database, and its type for material finder. Args: material_database (MaterialDatabase | int): The material database to set. material_database_type (MaterialDatabaseType | str): The type of material database to set. """ process_log(__name__, LogMessage.FUNCTION_CALL, locals(), name="set_data_domain") material_database = get_enum_value(material_database, MaterialDatabase) material_database_type = get_enum_value(material_database_type, MaterialDatabaseType) self.material_finder.SetDataDomain(material_database, material_database_type)
[docs] def get_first_material(self) -> Property: """ Get the first material. Returns: Property: The first material. """ process_log(__name__, LogMessage.FUNCTION_CALL, locals(), name="get_first_material") result = self.material_finder.GetFirstMaterial if result is None: return None return Property(result)
[docs] def get_next_material(self, material: Property | None) -> Property: """ Get the next material. Args: material (Property | None): The current material. Returns: Property: The next material. """ process_log(__name__, LogMessage.FUNCTION_CALL, locals(), name="get_next_material") if material is not None: check_type(material, Property) material_disp = coerce_optional_dispatch(material, "prop") result = self.material_finder.GetNextMaterial(material_disp) if result is None: return None return Property(result)
@property def file_type(self) -> str: """ Get the material database type. Returns: str: The material database type (System or User). """ process_log(__name__, LogMessage.PROPERTY_GET, locals(), name="file_type") return self.material_finder.FileType