Source code for creopyson.interface

"""Interface module.

Export 3D pdf, file (step, iges, dxf, etc...), picture, plot
Run mapkey
Import/Export program (pls, als)

"""
import re


[docs] def export_3dpdf( client, file_=None, filename=None, dirname=None, height=None, width=None, dpi=None, use_drawing_settings=None, sheet_range="all", ): """Export a model to a 3D PDF file. Args: client (obj): creopyson Client. `file_` (str, optional): Model name. Defaults is current active model. filename (str, optional): Destination file name. May also contain a path to the file. Defaults is the model name with the appropriate file extension, in Creo's working directory. dirname (str, optional): Destination directory. Defaults is Creo's current working directory. height (float, optional): PDF image height. Defaults is Creo default export height. width (float, optional): PDF image width. Defaults is Creo default export width. dpi (int, optional): PDF Image DPI. Default is Creo default export DPI. use_drawing_settings (boolean, optional): Whether to use special settings for exporting drawings. Defaut is False. sheet_range (string): Range of drawing sheets to export. Default vale is "all". Valid values: "all", "current", range of sheet numbers (ex: "1,3-4") Returns: dict: dirname (str): Directory of the output file filename (str): Name of the output file """ data = {"sheet_range": sheet_range} if file_ is not None: data["file"] = file_ else: active_file = client.file_get_active() if active_file: data["file"] = active_file["file"] if filename is not None: data["filename"] = filename if dirname is not None: data["dirname"] = dirname if height is not None: data["height"] = height if width is not None: data["width"] = width if dpi is not None: data["dpi"] = dpi if use_drawing_settings is not None: data["use_drawing_settings"] = use_drawing_settings return client._creoson_post("interface", "export_3dpdf", data)
[docs] def export_file( client, file_type, file_=None, filename=None, dirname=None, geom_flags=None, advanced=None, ): """Export a model to a file. The geom_flags option only applies to IGES and STEP exports. Setting geom_flags to 'default' will cause it to check the Creo config option 'intf3d_out_default_option' for the setting The advanced option will cause the Export to use settings defined in the appropriate `export_profiles` Creo Config Option for the file type. The advanced option only applies to DXF, IGES and STEP exports. The advanced option will only work with Creo 4 M030 or later. Args: client (obj): creopyson Client. file_type (str): File type. Valid values: "DXF", "IGES", "NEUTRAL", "PV", "STEP", "VRML". `file_` (str, optional): Model name. Defaults is current active model. filename (str, optional): Destination file name. May also contain a path to the file. Defaults is the model name with the appropriate file extension, in Creo's working directory. dirname (str, optional): Destination directory. Defaults is Creo's current working directory. geom_flags (str, optional): Geometry type for the export. Defaults is `solids`. Valid values: solids, surfaces, wireframe, wireframe_surfaces, quilts, default. advanced (Boolean, optional): Whether to use the newer Creo 4 file export function. Defaults is False. Returns: dict: dirname (str): Directory of the output file filename (str): Name of the output file """ data = {"type": file_type} if file_ is not None: data["file"] = file_ else: active_file = client.file_get_active() if active_file: data["file"] = active_file["file"] if filename is not None: data["filename"] = filename if dirname is not None: data["dirname"] = dirname if geom_flags is not None: data["geom_flags"] = geom_flags if advanced is not None: data["advanced"] = advanced return client._creoson_post("interface", "export_file", data)
[docs] def export_image( client, file_type, file_=None, filename=None, height=None, width=None, dpi=None, depth=None, ): """Export a model to an image file. Args: client (obj): creopyson Client. file_type (str): Image Type. Valid values: BMP, EPS, JPEG, TIFF. `file_` (str, optional): Model name. Defaults is current active model. filename (str, optional): Destination file name. May also contain a path to the file. Defaults is the model name with the appropriate file extension, in Creo's working directory. height (float, optional): Image height. Defaults is `10.0`. width (float, optional): Image width. Defaults is `7.5`. dpi (int, optional): Image DPI. Defaults is `100`. Valid values: 100, 200, 300, 400, 500, 600. depth (int, optional): Image depth. Defaults is `24`. Valid values: 8, 24. Returns: dict: dirname (str): Directory of the output file filename (str): Name of the output file """ data = {"type": file_type} if file_ is not None: data["file"] = file_ else: active_file = client.file_get_active() if active_file: data["file"] = active_file["file"] if filename is not None: data["filename"] = filename # if dirname: # data["dirname"] = dirname if height is not None: data["height"] = height if width is not None: data["width"] = width if dpi is not None: data["dpi"] = dpi if depth is not None: data["depth"] = depth return client._creoson_post("interface", "export_image", data)
[docs] def export_pdf( client, file_=None, filename=None, dirname=None, height=None, width=None, dpi=None, use_drawing_settings=None, sheet_range="all", ): """Export a model to a PDF file. When use_drawing_settings is true, the Font Stroke option will be set to Stroke All Fonts, and the Color Depth option will be set to Grayscale. Args: client (obj): creopyson Client. `file_` (str, optional): Model name. Defaults is current active model. filename (str, optional): Destination file name. May also contain a path to the file. Defaults is the model name with the appropriate file extension, in Creo's working directory. dirname (str, optional): Destination directory. Defaults is Creo's current working directory. height (float, optional): PDF image height. Defaults is Creo default export height. width (float, optional): PDF image width. Defaults is Creo default export width. dpi (int, optional): PDF Image DPI. Default is Creo default export DPI. use_drawing_settings (boolean, optional): Whether to use special settings for exporting drawings. Defaut is False. sheet_range (string): Range of drawing sheets to export. Default vale is "all". Valid values: "all", "current", range of sheet numbers (ex: "1,3-4") Returns: dict: dirname (str): Directory of the output file filename (str): Name of the output file """ data = {"sheet_range": sheet_range} if file_ is not None: data["file"] = file_ else: active_file = client.file_get_active() if active_file: data["file"] = active_file["file"] if filename is not None: data["filename"] = filename if dirname is not None: data["dirname"] = dirname if height is not None: data["height"] = height if width is not None: data["width"] = width if dpi is not None: data["dpi"] = dpi if use_drawing_settings is not None: data["use_drawing_settings"] = use_drawing_settings return client._creoson_post("interface", "export_pdf", data)
[docs] def export_program(client, file_=None): """Export a model's program to a file. Args: client (obj): creopyson Client. `file_` (str, optional): Model name. Defaults is current active model. Returns: dict: dirname (str): Directory of the output file filename (str): Name of the output file """ data = {} if file_ is not None: data["file"] = file_ else: active_file = client.file_get_active() if active_file: data["file"] = active_file["file"] return client._creoson_post("interface", "export_program", data)
[docs] def import_file( client, filename, file_type=None, dirname=None, new_name=None, new_model_type="asm" ): """Import a file as a model. Note: This function will not automatically display or activate the imported model. If you want that, you should take the file name returned by this function and pass it to file:open. Users of the old import_pv function should start using this function instead. Args: client (obj): creopyson Client. filename (str): Source file name. file_type (str, optional): File type. Valid values: "IGES", "NEUTRAL", "PV", "STEP". Defaults to None. Will analyse filename extension *.igs*|*.iges* => IGES *.stp*|*.step* => STEP *.neu* => NEUTRAL *.pvz* => PV dirname (str, optional): Source directory. Defaults is Creo's current working directory. new_name (str, optional): New model name. Any extension will be stripped off and replaced with one based on new_model_type. Defaults to None is the name of the file with an extension based on new_model_type.. new_model_type (str, optional): New model type. Valid values: "asm", "prt" Defaults to "asm". Returns: str: Name of the model imported """ data = {"filename": filename, "new_model_type": new_model_type} if file_type is None: if re.search(r".*\.(igs|iges).*", filename): data["type"] = "IGES" elif re.search(r".*\.(stp|step).*", filename): data["type"] = "STEP" elif re.search(r".*\.(neu).*", filename): data["type"] = "NEUTRAL" elif re.search(r".*\.(pvz).*", filename): data["type"] = "PV" else: raise TypeError( f"`{filename}` extension was not recognized, fill in file_type." ) else: data["type"] = file_type if dirname is not None: data["dirname"] = dirname if new_name is not None: data["new_name"] = new_name return client._creoson_post("interface", "import_file", data, "file")
[docs] def import_program(client, file_=None, filename=None, dirname=None): """Import a program file for a model. Cannot specify both file and filename parameters. Args: client (obj): creopyson Client. `file_` (str, optional): Destination Model name. Defaults is currently active model, or the model for the filename parameter if given. filename (str, optional): Source file name. Default is the model name with the appropriate file extension. dirname (str, optional): Source directory. Defaults is Creo's current working directory. Returns: str: Name of the model updated """ data = {} if file_ is not None: data["file"] = file_ else: active_file = client.file_get_active() if active_file: data["file"] = active_file["file"] if filename is not None: data["filename"] = filename if dirname is not None: data["dirname"] = dirname return client._creoson_post("interface", "import_program", data, "file")
[docs] def mapkey(client, script, delay=0): """Run a Mapkey script in Creo. Make sure to remove any `mapkey(continued)` clauses from the script argument. The tilde at the start of a line should occur immediately after the semicolon at the end of the previous line. Args: client (obj): creopyson Client. script (str): The mapkey script to run. delay (int): Amount of time to wait after starting the mapkey, in milliseconds. Default is 0. Returns: None """ data = {"script": script.replace(" ", ""), "delay": delay} return client._creoson_post("interface", "mapkey", data)
[docs] def plot(client, file_=None, dirname=None, driver=None): """Export a model plot. Args: client (obj): creopyson Client. `file_` (str, optional): Model name. Defaults is currently active model. dirname (str, optional): Destination directory. Defaults is Creo's current working directory. driver (str, optional): Driver export. Defaults is `POSTSCRIPT`. Valid values: POSTSCRIPT, JPEG, TIFF. Returns: dict: dirname (str): Directory of the output file filename (str): Name of the output file """ data = {} if file_ is not None: data["file"] = file_ else: active_file = client.file_get_active() if active_file: data["file"] = active_file["file"] if dirname is not None: data["dirname"] = dirname if driver is not None: data["driver"] = driver return client._creoson_post("interface", "plot", data)