From ea6df7f6170bf40e3cf93e5e2d5120bd7fd6b413 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 5 Sep 2024 10:53:52 +0500 Subject: [PATCH] Use latest syntax for setting geometry settings #5299 Also fixed: - old include_curves use - missing use of 'include_curves' in ifcopenshell.draw --- src/ifcdiff/ifcdiff.py | 4 ++-- .../docs/ifcopenshell/geometry_settings.rst | 10 +++++----- src/ifcopenshell-python/ifcopenshell/draw.py | 3 ++- src/ifcopenshell-python/ifcopenshell/geom/app.py | 5 +++-- src/ifcopenshell-python/ifcopenshell/geom/main.py | 4 ++-- src/ifcopenshell-python/test/test_create_shape.py | 1 + 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/ifcdiff/ifcdiff.py b/src/ifcdiff/ifcdiff.py index 0f7c01cfc4..889f23ca37 100755 --- a/src/ifcdiff/ifcdiff.py +++ b/src/ifcdiff/ifcdiff.py @@ -231,9 +231,9 @@ class IfcDiff: def get_settings(self, ifc: ifcopenshell.file) -> ifcopenshell.geom.settings: settings = ifcopenshell.geom.settings() # Are you feeling lucky? - settings.set(settings.DISABLE_BOOLEAN_RESULT, True) + settings.set("disable-boolean-result", True) # Are you feeling very lucky? - settings.set(settings.DISABLE_OPENING_SUBTRACTIONS, True) + settings.set("disable-opening-subtractions", True) # Facetation is to accommodate broken Revit files # See https://forums.buildingsmart.org/t/suggestions-on-how-to-improve-clarity-of-representation-context-usage-in-documentation/3663/6?u=moult body_contexts = [ diff --git a/src/ifcopenshell-python/docs/ifcopenshell/geometry_settings.rst b/src/ifcopenshell-python/docs/ifcopenshell/geometry_settings.rst index b525c80fcc..10c2822bfa 100644 --- a/src/ifcopenshell-python/docs/ifcopenshell/geometry_settings.rst +++ b/src/ifcopenshell-python/docs/ifcopenshell/geometry_settings.rst @@ -25,7 +25,7 @@ Here's an example of changing settings in Python: .. code-block:: python settings = ifcopenshell.geom.settings() - settings.set(settings.APPLY_DEFAULT_MATERIALS, True) + settings.set("apply-default-materials", True) settings.set_deflection_tolerance(1e-3) angular_tolerance @@ -53,7 +53,7 @@ Here is an example in Python: .. code-block:: python settings = ifcopenshell.geom.settings() - settings.set_angular_tolerance(0.5) + settings.set("mesher-angular-deflection", 0.5) APPLY_DEFAULT_MATERIALS ----------------------- @@ -178,7 +178,7 @@ Here is an example in Python: settings = ifcopenshell.geom.settings() contexts = [c.id() for c in ifc_file.by_type("IfcGeometricRepresentationContext") if c.ContextIdentifier == "Body"] - settings.set_context_ids(contexts) + settings.set("context-ids", contexts) CONVERT_BACK_UNITS @@ -228,7 +228,7 @@ Here is an example in Python: .. code-block:: python settings = ifcopenshell.geom.settings() - settings.set_deflection_tolerance(1e-3) + settings.set("mesher-linear-deflection", 1e-3) DISABLE_BOOLEAN_RESULT ---------------------- @@ -273,7 +273,7 @@ For example, if you want to set this setting in a python script you can use the .. code-block:: python settings = ifcopenshell.geom.settings() - settings.set(settings.DISABLE_OPENING_SUBTRACTIONS, True) + settings.set("disable-opening-subtractions", True) DISABLE_TRIANGULATION diff --git a/src/ifcopenshell-python/ifcopenshell/draw.py b/src/ifcopenshell-python/ifcopenshell/draw.py index 8e578f041d..1e32e29570 100644 --- a/src/ifcopenshell-python/ifcopenshell/draw.py +++ b/src/ifcopenshell-python/ifcopenshell/draw.py @@ -88,7 +88,8 @@ def main( ) # this is required for serialization - geom_settings.set("dimensionality", ifcopenshell.ifcopenshell_wrapper.CURVES_SURFACES_AND_SOLIDS) + dimensionality = W.CURVES_SURFACES_AND_SOLIDS if settings.include_curves else W.SURFACES_AND_SOLIDS + geom_settings.set("dimensionality", dimensionality) geom_settings.set("iterator-output", ifcopenshell.ifcopenshell_wrapper.NATIVE) geom_settings.set("apply-default-materials", True) diff --git a/src/ifcopenshell-python/ifcopenshell/geom/app.py b/src/ifcopenshell-python/ifcopenshell/geom/app.py index 6c873597cd..fa79fdb3ed 100644 --- a/src/ifcopenshell-python/ifcopenshell/geom/app.py +++ b/src/ifcopenshell-python/ifcopenshell/geom/app.py @@ -22,6 +22,7 @@ import time import operator import functools import multiprocessing +import ifcopenshell.ifcopenshell_wrapper as W try: from OCC.Core import AIS @@ -522,8 +523,8 @@ class application(QtWidgets.QApplication): if setting is None: setting = settings() - setting.set(setting.INCLUDE_CURVES, True) - setting.set(setting.USE_PYTHON_OPENCASCADE, True) + setting.set("dimensionality", W.CURVES_SURFACES_AND_SOLIDS) + setting.set("use-python-opencascade", True) self.signals = geometry_creation_signals() thread = self.thread = geometry_creation_thread(self.signals, setting, f) diff --git a/src/ifcopenshell-python/ifcopenshell/geom/main.py b/src/ifcopenshell-python/ifcopenshell/geom/main.py index cc94cf3ab3..cfd6616aa0 100644 --- a/src/ifcopenshell-python/ifcopenshell/geom/main.py +++ b/src/ifcopenshell-python/ifcopenshell/geom/main.py @@ -365,7 +365,7 @@ def create_shape( """ Return a geometric representation from STEP-based IFCREPRESENTATIONSHAPE or - Return an OpenCASCADE BRep if settings.USE_PYTHON_OPENCASCADE == True + Return an OpenCASCADE BRep if 'use-python-opencascade' is True Note that in Python, you must store a reference to the element returned by this function to prevent garbage collection when you access its children. See #1124. @@ -391,7 +391,7 @@ def create_shape( .. code:: python settings = ifcopenshell.geom.settings() - settings.set(settings.USE_PYTHON_OPENCASCADE, True) + settings.set("use-python-opencascade", True) ifc_file = ifcopenshell.open(file_path) products = ifc_file.by_type("IfcProduct") diff --git a/src/ifcopenshell-python/test/test_create_shape.py b/src/ifcopenshell-python/test/test_create_shape.py index aec58b4cdc..36597a83fe 100644 --- a/src/ifcopenshell-python/test/test_create_shape.py +++ b/src/ifcopenshell-python/test/test_create_shape.py @@ -19,6 +19,7 @@ class TestGeomSettings: assert settings.get("use-python-opencascade") is False assert "USE_PYTHON_OPENCASCADE = False" in repr(settings) + # Testing both new and old ways of setting geometry settings. if ifcopenshell.geom.has_occ: settings.set("use-python-opencascade", True) settings.set(settings.USE_PYTHON_OPENCASCADE, True)