diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/owner/__init__.py index 063dc84151..fa9b693073 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/__init__.py @@ -36,6 +36,7 @@ from .assign_actor import assign_actor from .create_owner_history import create_owner_history from .edit_actor import edit_actor from .edit_address import edit_address +from .edit_application import edit_application from .edit_organisation import edit_organisation from .edit_person import edit_person from .edit_role import edit_role @@ -63,6 +64,7 @@ __all__ = [ "create_owner_history", "edit_actor", "edit_address", + "edit_application", "edit_organisation", "edit_person", "edit_role", diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/edit_application.py b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_application.py new file mode 100644 index 0000000000..3224169ff2 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_application.py @@ -0,0 +1,44 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2021 Dion Moult +# +# This file is part of IfcOpenShell. +# +# IfcOpenShell is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# IfcOpenShell is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with IfcOpenShell. If not, see . +import ifcopenshell +from typing import Any + + +def edit_application( + file: ifcopenshell.file, application: ifcopenshell.entity_instance, attributes: dict[str, Any] +) -> None: + """Edits the attributes of an IfcApplication + + For more information about the attributes and data types of an + IfcApplication, consult the IFC documentation. + + :param application: The IfcApplication entity you want to edit + :param attributes: a dictionary of attribute names and values. + :return: None + + Example: + + .. code:: python + + application = ifcopenshell.api.owner.add_application(model, + application_full_name="My App") + ifcopenshell.api.owner.edit_application(model, application=application, + attributes={"ApplicationFullName": "My App New Name"}) + """ + for name, value in attributes.items(): + setattr(application, name, value) diff --git a/src/ifcopenshell-python/test/api/owner/test_edit_application.py b/src/ifcopenshell-python/test/api/owner/test_edit_application.py new file mode 100644 index 0000000000..4a88e8631b --- /dev/null +++ b/src/ifcopenshell-python/test/api/owner/test_edit_application.py @@ -0,0 +1,47 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2021 Dion Moult +# +# This file is part of IfcOpenShell. +# +# IfcOpenShell is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# IfcOpenShell is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with IfcOpenShell. If not, see . + +import test.bootstrap +import ifcopenshell.api.owner + + +class TestEditApplication(test.bootstrap.IFC4): + def test_editing_a_application(self): + application = self.file.create_entity("IfcApplication") + organization = self.file.create_entity("IfcOrganization") + attributes = { + "ApplicationDeveloper": organization, + "Version": "v001", + "ApplicationFullName": "App Name", + "ApplicationIdentifier": "App Name", + } + ifcopenshell.api.owner.edit_application( + self.file, + application=application, + attributes=attributes, + ) + for attr, value in attributes.items(): + assert getattr(application, attr) == value + + +class TestEditApplicationIFC2X3(test.bootstrap.IFC2X3, TestEditApplication): + pass + + +class TestEditApplicationIFC4X3(test.bootstrap.IFC4X3, TestEditApplication): + pass