def parseMaterialLibrary(): with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'Software\META', 0, _winreg.KEY_READ | _winreg.KEY_WOW64_32KEY) as key: META_PATH = _winreg.QueryValueEx(key, 'META_PATH')[0] MATERIALLIBINTERFACEPATH = os.path.join(META_PATH, "bin", "Python27", "Lib", "site-packages") sys.path.insert(0, MATERIALLIBINTERFACEPATH) import sitecustomize from MaterialLibraryInterface import LibraryManager PATH = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_DOCUMENTS = ctypes.c_char_p( uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_DOCUMENTS, 0, None, ctypes.byref(PATH)) MATERIALLIBPATH = os.path.join(PATH.value, "META Documents", "MaterialLibrary", "material_library.json") LIBRARY_MANAGER = LibraryManager(MATERIALLIBPATH) return LIBRARY_MANAGER
This file is a demo for the LibraryManager methods and demonstrates their usage. Many of the print statements are commented out, so that you can comment them back in and see what they do. """ if __name__ == "__main__": #run only if main """ First, we need to create a LibraryManager object. We'll call it "library_manager" so that we know what it is. The parameter passed to it is the location of the .json document. """ library_manager = LibraryManager() """ This class has a number of methods we'll demonstrate. The first method of importance is the materialData method, which takes as a parameter a string representing the name of the material for which you need data. """ steelData = library_manager.materialData("steel_stainless_316_l") """ The steelData variable now contains all the data about the steel_stainless_316_l material. As it stands, it isn't incredibly useful to us. We need to iterate through the
# following conditions: # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Data. # THE DATA IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS, SPONSORS, DEVELOPERS, CONTRIBUTORS, OR COPYRIGHT HOLDERS BE # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE DATA OR THE USE OR OTHER DEALINGS IN THE DATA. from MaterialLibraryInterface import LibraryManager import getpass import uuid import ctypes import os if __name__ == "__main__": #run only if main #get path to public documents path = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_Documents = ctypes.c_char_p(uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_Documents, 0, None, ctypes.byref(path)) libraryLocation = os.path.join(path.value, "META Documents", "MaterialLibrary", "material_library.json") library_manager = LibraryManager(libraryLocation) username = raw_input("Username: "******"Password: ") matList = library_manager.checkVersion(username, password)
from MaterialLibraryInterface import LibraryManager import getpass import uuid import ctypes import os if __name__ == "__main__": #run only if main #get path to public documents path = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_Documents = ctypes.c_char_p( uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_Documents, 0, None, ctypes.byref(path)) libraryLocation = os.path.join(path.value, "META Documents", "MaterialLibrary", "material_library.json") library_manager = LibraryManager(libraryLocation) username = raw_input("Username: "******"Password: ") matList = library_manager.updateJSON(username, password)
from MaterialLibraryInterface import LibraryManager import getpass import uuid import ctypes import os if __name__ == "__main__": #run only if main #get path to public documents path = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_Documents = ctypes.c_char_p(uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_Documents, 0, None, ctypes.byref(path)) libraryLocation = os.path.join(path.value, "META Documents", "MaterialLibrary", "material_library.json") library_manager = LibraryManager(libraryLocation) username = raw_input("Username: "******"Password: ") matList = library_manager.updateJSON(username, password)
from MaterialLibraryInterface import LibraryManager import uuid import ctypes import os if __name__ == "__main__": #run only if main #get path to public documents path = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_Documents = ctypes.c_char_p(uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_Documents, 0, None, ctypes.byref(path)) libraryLocation = os.path.join(path.value, "META Documents", "MaterialLibrary", "material_library.json") library_manager = LibraryManager(libraryLocation) matList = library_manager.listAllMaterials() matList.sort() for material in matList: print material
from MaterialLibraryInterface import LibraryManager import getpass import uuid import ctypes import os if __name__ == "__main__": #run only if main #get path to public documents path = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_Documents = ctypes.c_char_p( uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_Documents, 0, None, ctypes.byref(path)) libraryLocation = os.path.join(path.value, "META Documents", "MaterialLibrary", "material_library.json") library_manager = LibraryManager(libraryLocation) username = raw_input("Username: "******"Password: ") matList = library_manager.checkVersion(username, password)
""" This file is a demo for the LibraryManager methods and demonstrates their usage. Many of the print statements are commented out, so that you can comment them back in and see what they do. """ if __name__ == "__main__": #run only if main """ First, we need to create a LibraryManager object. We'll call it "library_manager" so that we know what it is. The parameter passed to it is the location of the .json document. """ library_manager = LibraryManager() """ This class has a number of methods we'll demonstrate. The first method of importance is the materialData method, which takes as a parameter a string representing the name of the material for which you need data. """ steelData = library_manager.materialData("steel_stainless_316_l") """ The steelData variable now contains all the data about the steel_stainless_316_l material. As it stands, it isn't incredibly useful to us. We need to iterate through the data structure to extract the useful information. """ #pprint(steelData)
# WITH THE DATA OR THE USE OR OTHER DEALINGS IN THE DATA. from MaterialLibraryInterface import LibraryManager import uuid import ctypes import os if __name__ == "__main__": #run only if main #get path to public documents path = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_Documents = ctypes.c_char_p(uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_Documents, 0, None, ctypes.byref(path)) libraryLocation = os.path.join(path.value, "META Documents", "MaterialLibrary", "material_library.json") library_manager = LibraryManager(libraryLocation) mySet = set() for material in library_manager.data: materialData = library_manager.materialData(material) for keys in materialData: unit = "" if "unit" in materialData[keys]: unit = materialData[keys]["unit"] propTuple = keys, unit mySet.add(propTuple) propList = list(mySet) propList.sort() for prop in propList:
from MaterialLibraryInterface import LibraryManager import uuid import ctypes import os if __name__ == "__main__": #run only if main #get path to public documents path = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_Documents = ctypes.c_char_p( uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_Documents, 0, None, ctypes.byref(path)) libraryLocation = os.path.join(path.value, "META Documents", "MaterialLibrary", "material_library.json") library_manager = LibraryManager(libraryLocation) matList = library_manager.listAllMaterials() matList.sort() for material in matList: print material
from MaterialLibraryInterface import LibraryManager import uuid import ctypes import os if __name__ == "__main__": #run only if main #get path to public documents path = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_Documents = ctypes.c_char_p(uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_Documents, 0, None, ctypes.byref(path)) libraryLocation = os.path.join(path.value, "META Documents", "MaterialLibrary", "material_library.json") library_manager = LibraryManager(libraryLocation) mySet = set() for material in library_manager.data: materialData = library_manager.materialData(material) for keys in materialData: unit = "" if "unit" in materialData[keys]: unit = materialData[keys]["unit"] propTuple = keys, unit mySet.add(propTuple) propList = list(mySet) propList.sort() for prop in propList: propName, unit = prop print propName + ": " + unit
def get_props_from_material_library(in_material_names_list, out_material_lib_props_dict): # AnalysisMaterialProperties dictionary function_name = "get_props_from_material_library" # Open the material library try: with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'Software\META', 0, _winreg.KEY_READ | _winreg.KEY_WOW64_32KEY) as key: META_PATH = _winreg.QueryValueEx(key, 'META_PATH')[0] materialLibInterfacePath = os.path.join(META_PATH, "bin", "Python27", "Lib", "site-packages", "material_library") sys.path.insert(0, materialLibInterfacePath) from MaterialLibraryInterface import LibraryManager path = ctypes.c_wchar_p(chr(0x00) * 256) FOLDERID_Documents = ctypes.c_char_p(uuid.UUID("ED4824AF-DCE4-45A8-81E2-FC7965083634").bytes_le) ctypes.windll.shell32.SHGetKnownFolderPath(FOLDERID_Documents, 0, None, ctypes.byref(path)) materialLibPath = os.path.join(path.value, "META Documents", "MaterialLibrary", "material_library.json") library_manager = LibraryManager(materialLibPath) except Exception as e: raise CADExcep.CADError("Error, Function: " + function_name + ", Message: " + \ "Failed to locate/open the material library. Locate/open Error: " + \ e.message) for material_name in in_material_names_list: out_material_lib_props_dict[material_name] = AnalysisMaterialProperties(material_name) try: material_data = library_manager.materialData(material_name) except Exception as e: raise CADExcep.CADError("Error, Function: " + function_name + ", Message: " + "Failed to locate material " + material_name + " in material library. Error: " + e.message) """ #replace zzz with the material property (e.g. replace zzz mechanical__ratio_poissons) # zzz if "zzz" in material_data: if ( material_data["zzz"]["value"]!="None" ): out_material_lib_props_dict[material_name].zzz = material_data["zzz"]["value"] if ("unit" in material_data["zzz"]): out_material_lib_props_dict[material_name].zzz_unit = material_data["zzz"]["unit"] else: out_material_lib_props_dict[material_name].zzz_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].zzz_defined = True """ # density if "density" in material_data: if (material_data["density"]["value"]!="None"): out_material_lib_props_dict[material_name].density = material_data["density"]["value"] if ("unit" in material_data["density"]): out_material_lib_props_dict[material_name].density_unit = material_data["density"]["unit"] else: out_material_lib_props_dict[material_name].density_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].density_defined = True # mechanical__modulus_elastic if "mechanical__modulus_elastic" in material_data: if (material_data["mechanical__modulus_elastic"]["value"]!="None"): out_material_lib_props_dict[material_name].mechanical__modulus_elastic = material_data["mechanical__modulus_elastic"]["value"] if ("unit" in material_data["mechanical__modulus_elastic"]): out_material_lib_props_dict[material_name].mechanical__modulus_elastic_unit = material_data["mechanical__modulus_elastic"]["unit"] else: out_material_lib_props_dict[material_name].mechanical__modulus_elastic_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].mechanical__modulus_elastic_defined = True # mechanical__ratio_poissons if "mechanical__ratio_poissons" in material_data: if (material_data["mechanical__ratio_poissons"]["value"]!="None"): out_material_lib_props_dict[material_name].mechanical__ratio_poissons = material_data["mechanical__ratio_poissons"]["value"] if ("unit" in material_data["mechanical__ratio_poissons"]): out_material_lib_props_dict[material_name].mechanical__ratio_poissons_unit = material_data["mechanical__ratio_poissons"]["unit"] else: out_material_lib_props_dict[material_name].mechanical__ratio_poissons_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].mechanical__ratio_poissons_defined = True # mechanical__strength_tensile_yield if "mechanical__strength_tensile_yield" in material_data: if (material_data["mechanical__strength_tensile_yield"]["value"]!="None"): out_material_lib_props_dict[material_name].mechanical__strength_tensile_yield = material_data["mechanical__strength_tensile_yield"]["value"] if ("unit" in material_data["mechanical__strength_tensile_yield"]): out_material_lib_props_dict[material_name].mechanical__strength_tensile_yield_unit = material_data["mechanical__strength_tensile_yield"]["unit"] else: out_material_lib_props_dict[material_name].mechanical__strength_tensile_yield_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].mechanical__strength_tensile_yield_defined = True # mechanical__strength_tensile_ultimate if "mechanical__strength_tensile_ultimate" in material_data: if (material_data["mechanical__strength_tensile_ultimate"]["value"]!="None"): out_material_lib_props_dict[material_name].mechanical__strength_tensile_ultimate = material_data["mechanical__strength_tensile_ultimate"]["value"] if ("unit" in material_data["mechanical__strength_tensile_ultimate"]): out_material_lib_props_dict[material_name].mechanical__strength_tensile_ultimate_unit = material_data["mechanical__strength_tensile_ultimate"]["unit"] else: out_material_lib_props_dict[material_name].mechanical__strength_tensile_ultimate_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].mechanical__strength_tensile_ultimate_defined = True # mechanical__strength_bearing_yield if "mechanical__strength_bearing_yield" in material_data: if (material_data["mechanical__strength_bearing_yield"]["value"]!="None"): out_material_lib_props_dict[material_name].mechanical__strength_bearing_yield = material_data["mechanical__strength_bearing_yield"]["value"] if ("unit" in material_data["mechanical__strength_bearing_yield"]): out_material_lib_props_dict[material_name].mechanical__strength_bearing_yield_unit = material_data["mechanical__strength_bearing_yield"]["unit"] else: out_material_lib_props_dict[material_name].mechanical__strength_bearing_yield_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].mechanical__strength_bearing_yield_defined = True # mechanical__strength_bearing_ultimate if "mechanical__strength_bearing_ultimate" in material_data: if (material_data["mechanical__strength_bearing_ultimate"]["value"]!="None"): out_material_lib_props_dict[material_name].mechanical__strength_bearing_ultimate = material_data["mechanical__strength_bearing_ultimate"]["value"] if ("unit" in material_data["mechanical__strength_bearing_ultimate"]): out_material_lib_props_dict[material_name].mechanical__strength_bearing_ultimate_unit = material_data["mechanical__strength_bearing_ultimate"]["unit"] else: out_material_lib_props_dict[material_name].mechanical__strength_bearing_ultimate_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].mechanical__strength_bearing_ultimate_defined = True # mechanical__strength_shear if "mechanical__strength_shear" in material_data: if (material_data["mechanical__strength_shear"]["value"]!="None"): out_material_lib_props_dict[material_name].mechanical__strength_shear = material_data["mechanical__strength_shear"]["value"] if ("unit" in material_data["mechanical__strength_shear"]): out_material_lib_props_dict[material_name].mechanical__strength_shear_unit = material_data["mechanical__strength_shear"]["unit"] else: out_material_lib_props_dict[material_name].mechanical__strength_shear_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].mechanical__strength_shear_defined = True # mechanical__strength_fatigue if "mechanical__strength_fatigue" in material_data: if (material_data["mechanical__strength_fatigue"]["value"]!="None"): out_material_lib_props_dict[material_name].mechanical__strength_fatigue = material_data["mechanical__strength_fatigue"]["value"] if ("unit" in material_data["mechanical__strength_fatigue"]): out_material_lib_props_dict[material_name].mechanical__strength_fatigue_unit = material_data["mechanical__strength_fatigue"]["unit"] else: out_material_lib_props_dict[material_name].mechanical__strength_fatigue_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].mechanical__strength_fatigue_defined = True # mechanical__strength_fatigue_cycles if "mechanical__strength_fatigue_cycles" in material_data: if (material_data["mechanical__strength_fatigue_cycles"]["value"]!="None"): out_material_lib_props_dict[material_name].mechanical__strength_fatigue_cycles = material_data["mechanical__strength_fatigue_cycles"]["value"] if ("unit" in material_data["mechanical__strength_fatigue_cycles"]): out_material_lib_props_dict[material_name].mechanical__strength_fatigue_cycles_unit = material_data["mechanical__strength_fatigue_cycles"]["unit"] else: out_material_lib_props_dict[material_name].mechanical__strength_fatigue_cycles_unit = unit_utils.MECHANICAL_UNIT_CYCLE out_material_lib_props_dict[material_name].mechanical__strength_fatigue_cycles_defined = True # thermal__coefficient_expansion_linear if "thermal__coefficient_expansion_linear" in material_data: if (material_data["thermal__coefficient_expansion_linear"]["value"]!="None"): out_material_lib_props_dict[material_name].thermal__coefficient_expansion_linear = material_data["thermal__coefficient_expansion_linear"]["value"] if ("unit" in material_data["thermal__coefficient_expansion_linear"]): out_material_lib_props_dict[material_name].thermal__coefficient_expansion_linear_unit = material_data["thermal__coefficient_expansion_linear"]["unit"] else: out_material_lib_props_dict[material_name].thermal__coefficient_expansion_linear_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].thermal__coefficient_expansion_linear_defined = True # thermal__conductivity if "thermal__conductivity" in material_data: if (material_data["thermal__conductivity"]["value"]!="None"): out_material_lib_props_dict[material_name].thermal__conductivity = material_data["thermal__conductivity"]["value"] if ("unit" in material_data["thermal__conductivity"]): out_material_lib_props_dict[material_name].thermal__conductivity_unit = material_data["thermal__conductivity"]["unit"] else: out_material_lib_props_dict[material_name].thermal__conductivity_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].thermal__conductivity_defined = True # thermal__capacity_specific_heat if "thermal__capacity_specific_heat" in material_data: if (material_data["thermal__capacity_specific_heat"]["value"]!="None"): out_material_lib_props_dict[material_name].thermal__capacity_specific_heat = material_data["thermal__capacity_specific_heat"]["value"] if ("unit" in material_data["thermal__capacity_specific_heat"]): out_material_lib_props_dict[material_name].thermal__capacity_specific_heat_unit = material_data["thermal__capacity_specific_heat"]["unit"] else: out_material_lib_props_dict[material_name].thermal__capacity_specific_heat_unit = unit_utils.MECHANICAL_UNIT_NONE out_material_lib_props_dict[material_name].thermal__capacity_specific_heat_defined = True """