Source code for creopyson.familytable

"""Familytable module."""


[docs] def add_inst(client, instance, file_=None): """Add a new instance to a family table. Creates a family table if one does not exist. Args: client (obj): creopyson Client. instance (str): New instance name. `file_` (str, optional): File name. Defaults is currently active model. Returns: None """ data = {"instance": instance} 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("familytable", "add_inst", data)
[docs] def create_inst(client, instance, file_=None): """Create a new model from a family table row. Args: client (obj): creopyson Client. instance (str): Instance name. `file_` (str, optional): File name. Defaults is currently active model. Returns: (str): New model name. """ data = {"instance": instance} 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("familytable", "create_inst", data, "name")
[docs] def delete_inst(client, instance, file_=None): """Delete an instance from a family table. Args: client (obj): creopyson Client. instance (str): Instance name. `file_` (str, optional): File name. Defaults is currently active model. Returns: None """ data = {"instance": instance} 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("familytable", "delete_inst", data)
[docs] def delete(client, file_=None): """Delete an entire family table. Args: client (obj): creopyson Client. `file_` (str, optional): File name (wildcards allowed: True). Defaults is currently active model. Returns: None """ 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("familytable", "delete", data)
[docs] def exists(client, instance, file_=None): """Check whether an instance exists in a family table. Args: client (obj): creopyson Client. instance (str): Instance name. `file_` (str, optional): File name. Defaults is currently active model. Returns: (boolean): Whether the instance exists in the model's family table; returns false if there is no family table in the model. """ data = {"instance": instance} 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("familytable", "exists", data, "exists")
[docs] def get_cell(client, instance, colid, file_=None): """Get one cell of a family table. Args: client (obj): creopyson Client. instance (str): Instance name. colid (str): Colimn ID. `file_` (str, optional): File name. Defaults is currently active model. Returns: (dict): instance (str): Family Table instance name. colid (str): Column ID. value (depends on datatype): Cell value. datatype (str): Data type. coltype (str): Column Type; a string corresponding to the Creo column type. """ data = {"instance": instance, "colid": colid} 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("familytable", "get_cell", data)
[docs] def get_header(client, file_=None): """Get the header of a family table. Args: client (obj): creopyson Client. `file_` (str, optional): File name. Defaults is currently active model. Returns: (list:dict): colid (str): Column ID. value (depends on date type): Cell value. datatype (str): Data type. Valid values: STRING, DOUBLE, INTEGER, BOOL, NOTE. coltype (str): Column Type; a string corresponding to the Creo column type. """ 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("familytable", "get_header", data, "columns")
[docs] def get_parents(client, file_=None): """Get the parent instances of a model in a nested family table. Args: client (obj): creopyson Client. `file_` (str, optional): File name. Defaults is currently active model. Returns: (list:str): List of parent instance names, starting with the immediate parent and working back. """ 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("familytable", "get_parents", data, "parents")
[docs] def get_row(client, instance, file_=None): """Get one row of a family table. Args: client (obj): creopyson Client. instance (str): Instance name. `file_` (str, optional): File name. Defaults is currently active model. Returns: (dict): colid (str): Column ID. value (depends on datatype): Cell value. datatype (str): Data type. coltype (str): Column Type; a string corresponding to the Creo column type. """ data = {"instance": instance} 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("familytable", "get_row", data, "columns")
[docs] def list_(client, file_=None, instance=None): """List the instance names in a family table. Args: client (obj): creopyson Client. instance (str, optional): Instance name filter (wildcards allowed: True). Defaults is all instances. `file_` (str, optional): File name. Defaults is currently active model. Returns: (list:str): List of matching instance names """ 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 instance is not None: data["instance"] = instance return client._creoson_post("familytable", "list", data, "instances")
[docs] def list_tree(client, file_=None, erase=None): """Get a hierarchical structure of a nested family table. Args: client (obj): creopyson Client. `file_` (str, optional): File name. Defaults is currently active model. erase (boolean, optional): Erase model and non-displayed models afterwards. Defaults is `False`. Returns: (list:str): List of child instances total (int): Count of all child instances including their decendants. children (list:dict): name (str): Name of the family table instance. total (int): Count of all child instances including their decendants. children (list:dict): List of child instances. """ 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 erase is not None: data["erase"] = erase return client._creoson_post("familytable", "list_tree", data, "children")
[docs] def replace(client, cur_model, new_inst, file_=None, cur_inst=None, path=None): """Replace a model in an assembly with another inst in the same family table. You must specify either cur_inst or path. Args: client (obj): creopyson Client. cur_model (str): Generic model containing the instances. new_inst (str): New instance name. `file_` (str, optional): File name (usually an assembly). Defaults is currently active model. cur_inst (str): Instance name to replace. Defaults to None. path (list:int, optional): Path to component to replace. Defaults to None. Returns: None """ data = { "cur_model": cur_model, "new_inst": new_inst, } if file_ is not None: data["file"] = file_ else: active_file = client.file_get_active() if active_file: data["file"] = active_file["file"] if cur_inst is not None: data["cur_inst"] = cur_inst if path is not None: data["path"] = path return client._creoson_post("familytable", "replace", data)
# TODO: path/cur_inst
[docs] def set_cell(client, instance, colid, value, file_=None): """Set the value of one cell of a family table. Args: client (obj): creopyson Client. instance (str): Family Table instance name. colid (str): Column ID. value (depends on data type): Cell value. `file_` (str, optional): File name (usually an assembly). Defaults is currently active model. Returns: None """ data = { "instance": instance, "colid": colid, "value": value, } 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("familytable", "set_cell", data)