Source code for pymead.plugins.IGES.global_params

from datetime import datetime

from pymead.plugins.IGES.iges_param import IGESParam
from pymead.plugins.IGES import global_section_col_width
from pymead.version import __version__


[docs] class GlobalParams: """Global parameter section setup for the IGES file format containing defaults for each value""" units_indicators = { "inches": (1, "INCH"), "millimeters": (2, "MM"), "feet": (4, "FT"), "miles": (5, "MI"), "meters": (6, "M"), "kilometers": (7, "KM"), "mils": (8, "MIL"), "microns": (9, "UM"), "centimeters": (10, "CM"), "microinches": (11, "UIN"), }
[docs] def __init__(self): self.parameter_delimiter_char = IGESParam(",", "string") self.record_delimiter_char = IGESParam(";", "string") self.product_id_sender = IGESParam("bezier_curves", "string") self.file_name = IGESParam("", "none") self._native_system_id = IGESParam(f"pymead {__version__}", "string") self._preprocessor_version = IGESParam(f"pymead {__version__}", "string") self.binary_bits_int = IGESParam(32, "int") self.max_power_sp = IGESParam(38, "int") # single-precision self.sig_digits_sp = IGESParam(16, "int") # single-precision self.max_power_dp = IGESParam(38, "int") # double-precision self.sig_digits_dp = IGESParam(16, "int") # double-precision self.product_id_receiver = IGESParam("bezier_curves", "string") self.model_space_scale = IGESParam(1.0, "real") self.units_flag = IGESParam(self.units_indicators["millimeters"][0], "int") self.units_name = IGESParam(self.units_indicators["millimeters"][1], "string") self.max_line_weight_gradations = IGESParam(300, "int") self.width_max_line_weight = IGESParam(2.0, "real") self.date_and_time_file_generation = IGESParam(datetime.now(), "datetime") self.min_model_resolution = IGESParam(1.0e-5, "real") self.approx_max_coord_value = IGESParam(100000.0, "real") self.author_name = IGESParam("", "none") # dtype can also be set to "string" self.author_org = IGESParam("", "none") # dtype can also be set to "string" self.spec_compliance_flag = IGESParam(11, "int") self.spec_drafting_flag = IGESParam(0, "int") self.date_time_last_modification = IGESParam(datetime.now(), "datetime")
def write_globals_string(self): gp_list = [v.write_value_to_python_str() for v in vars(self).values()] gp_string = self.parameter_delimiter_char.value.join(gp_list) gp_string += self.record_delimiter_char.value return self.word_wrap_globals(gp_string) @staticmethod def word_wrap_globals(old_gp_string: str): new_gp_string = "" start_idx, end_idx = 0, min(global_section_col_width, len(old_gp_string)) gp_line_counter = 0 for wrap_idx in range(int(len(old_gp_string) / global_section_col_width) + 1): gp_line_counter += 1 new_gp_string += old_gp_string[start_idx:end_idx] new_gp_string += " " * (global_section_col_width - (end_idx - start_idx)) new_gp_string += f"G{gp_line_counter:7d}\n" start_idx += global_section_col_width end_idx += min(global_section_col_width, len(old_gp_string) - (wrap_idx + 1) * global_section_col_width) return new_gp_string