This commit is contained in:
Andrej730
2025-06-16 13:08:44 +05:00
parent a12bb343ca
commit a75f6a5804
@@ -17,7 +17,7 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell.api
from typing import Optional, Any
from typing import Optional, Any, Union
def add_application(
@@ -53,33 +53,35 @@ def add_application(
"""
usecase = Usecase()
usecase.file = file
usecase.settings = {
"application_developer": application_developer,
"version": version or ifcopenshell.version,
"application_full_name": application_full_name,
"application_identifier": application_identifier,
}
return usecase.execute()
return usecase.execute(
application_developer,
version or ifcopenshell.version,
application_full_name,
application_identifier,
)
class Usecase:
file: ifcopenshell.file
settings: dict[str, Any]
def execute(self):
if not self.settings["application_developer"]:
self.settings["application_developer"] = self.create_application_organisation()
def execute(
self,
application_developer: Union[ifcopenshell.entity_instance, None],
version: str,
application_full_name: str,
application_identifier: str,
) -> ifcopenshell.entity_instance:
if not application_developer:
application_developer = self.create_application_organisation()
return self.file.create_entity(
"IfcApplication",
**{
"ApplicationDeveloper": self.settings["application_developer"],
"Version": self.settings["version"],
"ApplicationFullName": self.settings["application_full_name"],
"ApplicationIdentifier": self.settings["application_identifier"],
},
ApplicationDeveloper=application_developer,
Version=version,
ApplicationFullName=application_full_name,
ApplicationIdentifier=application_identifier,
)
def create_application_organisation(self):
def create_application_organisation(self) -> ifcopenshell.entity_instance:
result = self.file.create_entity(
"IfcOrganization",
**{
@@ -100,5 +102,6 @@ class Usecase:
],
},
)
# 0 IfcOrganization.Identification / Id (IFC2X3).
result[0] = "IfcOpenShell"
return result