"""Note module."""
[docs]def copy(client, name, to_name=None, file_=None, to_file=None):
"""Copy note to another in the same model or another model.
Args:
client (obj):
creopyson Client.
name (str):
Note name to copy (wildcards allowed: True).
to_name (str):
Destination note.
Defaults is the source note name
`file_` (str, optional):
Model name (wildcards allowed: True).
Defaults is current active model.
to_file (str, optional):
Destination model.
Defaults is the source model.
Returns:
None
"""
data = {"name": name}
if to_name is not None:
data["to_name"] = to_name
if file_ is not None:
data["file"] = file_
else:
active_file = client.file_get_active()
if active_file:
data["file"] = active_file["file"]
if to_file is not None:
data["to_file"] = to_file
return client._creoson_post("note", "copy", data)
[docs]def delete(client, name, file_=None):
"""Delete a model or drawing note.
Args:
client (obj):
creopyson Client.
name (str):
Note name (wildcards allowed: True).
`file_` (str, optional):
Model name (wildcards allowed: True).
Defaults is current active model.
Returns:
None
"""
data = {"name": name}
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("note", "delete", data)
[docs]def exists(client, file_=None, name=None):
"""Check whether note(s) exists on a model.
Args:
client (obj):
creopyson Client.
`file_` (str, optional):
Model name. Defaults is current active model.
name (str|list:str, optional):
Note name; List of note names.
if empty it checks for any note's existence.
Returns:
(boolean): Whether the note exists on the model.
"""
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 name is not None:
if isinstance(name, (str)):
data["name"] = name
elif isinstance(name, (list)):
data["names"] = name
return client._creoson_post("note", "exists", data, "exists")
[docs]def get(client, name, file_=None):
"""Get the text of a model or drawing note.
Values will automatically be returned Base64-encoded if they are strings
which contain Creo Symbols or other non-ASCII data.
Args:
client (obj):
creopyson Client.
name (str):
Note name.
`file_` (str, optional):
Model name.
Defaults is current active model or drawing.
Returns:
(dict):
file (str):
File name.
name (str):
Note name.
encoded (boolean):
Value is Base64-encoded.
url (str):
"Note URL, if there is one.
location (obj:JLPoint):
Note location in Drawing Units (drawing notes only)
"""
data = {"name": name}
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("note", "get", data)
[docs]def list_(client, file_=None, name=None, value=None, get_expanded=None, select=False):
"""Get a list of notes from one or more models.
Values will automatically be returned Base64-encoded if they are strings
which contain Creo Symbols or other non-ASCII data.
Args:
client (obj):
creopyson Client.
`file_` (str, optional):
Model name (wildcards allows: True).
Defaults is current active model.
name (str|list:str, optional):
Note name; List of note names.
if empty all notes are listed.
value (str, optional):
Parameter value filter (wildcards allows: True).
Defaults is `no filter`.
get_expanded (boolean, optional):
Whether to return text with parameter values replaced.
Defaults is False.
select (boolean, optional):
If true, the notes that are found will be selected in Creo.
Defaults is False.
Returns:
(list:dict):
name (str): Note name.
value (str): Note text with parameters not expanded.
value_expanded (str): Note text with parameters expanded.
encoded (boolean): Value is Base64-encoded.
location (jlpoint): 3D coordinate dict.
"""
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 name is not None:
if isinstance(name, (str)):
data["name"] = name
elif isinstance(name, (list)):
data["names"] = name
if get_expanded is not None:
data["get_expanded"] = get_expanded
if value is not None:
data["value"] = value
if select is not None:
data["select"] = select
return client._creoson_post("note", "list", data, "itemlist")
[docs]def set_(client, name, file_=None, location=None, encoded=None, value=None):
r"""Set the text of a model or drawing note.
The location parameter can used to position a new note, or to change the
position of an existing note. If the text contains Creo Symbols or other
non-ASCII text, you must Base64-encode the value and set encoded to true
You may be able to avoid Base64-encoding symbols by using Unicode for the
binary characters, for example including \\u0001#\\u0002 in the value to
insert a plus/minus symbol. Embed newlines in the value for line breaks.
Args:
client (obj):
creopyson Client.
name (str):
Note name (wildcards allowed: True).
`file_` (str, optional):
Model name. Defaults is current active model or drawing.
location (JLPoint):
Coordinates for the note placement in Drawing Units.
If missing and this is a new note, note will be placed at 0, 0.
encoded (boolean, optional):
Whether the value is Base64-encoded. Defaults is False.
value (str, optional):
Note text with parameters not expanded.
Defaults to None: clears the note if missing.
Returns:
None
"""
data = {"name": name}
if file_ is not None:
data["file"] = file_
else:
active_file = client.file_get_active()
if active_file:
data["file"] = active_file["file"]
if location is not None:
data["location"] = location
if encoded is not None:
data["encoded"] = encoded
if value is not None:
data["value"] = value
return client._creoson_post("note", "set", data)