From 66281ec1f1035e66fceacf046a714b76c9fc900a Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 14 Nov 2022 07:55:50 +1100 Subject: [PATCH] Add docs for attribute API --- .../api/attribute/edit_attributes.py | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/api/attribute/edit_attributes.py b/src/ifcopenshell-python/ifcopenshell/api/attribute/edit_attributes.py index 97cd6e850a..62bf6428ca 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/attribute/edit_attributes.py +++ b/src/ifcopenshell-python/ifcopenshell/api/attribute/edit_attributes.py @@ -20,11 +20,30 @@ import ifcopenshell.api class Usecase: - def __init__(self, file, **settings): + def __init__(self, file, product=None, attributes=None): + """Edit the attributes of a product + + All IFC entities have attributes. Normally they can be edited directly, + by simply assigning a new value to them. In some scenarios, you may wish + to also ensure that ownership history is updated. This function provides + that convenience. + + :param product: The product you want to edit. This may be any rooted IFC + entity. + :type product: ifcopenshell.entity_instance + :param attributes: a dictionary of attribute names and values. + :type attributes: dict, optional + :return: None + :rtype: None + + Example:: + + element = ifcopenshell.api.run("root.create_entity", model, ifc_class="IfcWall") + ifcopenshell.api.run("attribute.edit_attributes", model, + product=element, attributes={"Name": "Waldo"}) + """ self.file = file - self.settings = {"product": None, "attributes": {}} - for key, value in settings.items(): - self.settings[key] = value + self.settings = {"product": product, "attributes": attributes or {}} def execute(self): for name, value in self.settings["attributes"].items():